Last week, I had a very intense schedule. Usually I don't like doing more than one event at the same week but this was an exception.
First, I was honored to speak at Enterprise Search Europe
in London. Was very good seeing the European Search Community in action - and for me, it was a kind of "upside down" experience: usually I speak about Search to SharePoint folks. But now, I had to speak about SharePoint 2013's capabilities to Search experts. And also, had a LOT of interesting and inspiring discussions.
Unfotunately, I had to leave earlier, due to my schedule: I made my very first Online Search Class
with SharePoint-Videos.com. I feel it went very well, had a lot of GREAT questions - this is always a good sign. Thank you everyone who attended!
(If you couldn't make it, stay tuned for the next one!)
Next station is Paris
, then Oslo
. See you there!
I always use this in my conference sessions, as 1) makes the understanding of Search much easier, 2) takes the attendees attention, 3) describes the Search use cases very well.
So here is, how I see the Information-Seeking Patterns, a.k.a. how people look for something they need.1. "I know what I'm searching for and I know how to find it."
This story is obvious: I know what I'm seaching for - an email sent by my manager last week, telling me I'd be promoted from 1 Jan. A document describing the fire alarm rules in the office building. Every documents related to customer XYZ. Bills that are unpaid for more than 60 days now.
AND I know how to find these: there's a well planned and designed Search center where I can enter my query and can refine afterwards. I know what to expect from this site and how to use it. OR I know I have to use the search function of Outlook. OR I know the structure of the navigation of our document management system, so that I know where this piece of content is expected to be stored.
Don't forget: findability
is not always about search! Search can help
findability, of course, but we do also have navigation, company knowledge base, link collection, etc. that might help (if deployed and used properly).2. "I know what I'm searching for but have no clue how and where to find it."
I know what I am searching for, again. I know what I am interested in, what information I need to find to be able to do my job.
BUT in this case, I don't know, where to find it. Don't even know how to search for it. Maybe don't even know who to ask. Our company either doesn't have any Search solution OR it is useless OR it's not communicated OR I am not trained to use it OR ... millions of reasons can be found at enterprises who doesn't provide a good, well-know solution for search. The end result is the same: users don't know how and where to search, so that 1) they cannot find the information they need, 2) these companies will have more and more duplicated or even multiplicated content, as a "side effect" of not finding the existing ones.
And there's one more effect you have to count in this case: people will trust search less and less due to their negative experiences.
3. "I don't even know what I'm searching for."
Well, this might sound funny, maybe unbelievable, but this happens much more than you would expect. Just imagine the following scenarios: I'm searching for something that proves I am right regarding to X. Searching for some nice diagram for my marketing presentation next week that makes my managers wow. I'm searching for something that could help me to decide if I should go for A or B.
Are you getting this? These are the scenarios that I call "soft queries", when I cannot really specify all the characteristics of the content I'm looking for. But I "feel" what I need and expect the Search Solution to help me to find the best/optimal results. For this, Search must be interactive and user friendly, easy-to-use and easy-to-understand. If it is, will be a huge help for information workers in these kinds of scenarios.
4. "Am I searching???"
I know, this one sounds funny. Some of the attendees think it's about the lazy detective who's expected to look for evidences and find the burgler. But no, it's not that.
It's about the applications that are based on Search, but the users can use them without knowing there's the search engine running in the background. Yes, these are the Search Based Applications.
If you work in a Call Center, you're not "searching" for customer data. When I call you, you enter my customer ID and need to get all my data (insurances, contracts, , call history, mailings, payments, open cases, etc.). You're not thinking about search, you need to get these info. That's it.
If you work in a legal company, you need to get everything about a customer, about a case, about a type of case, precedents, etc. You use your legal application that can provide all the information you need. You don't mind if it's on SharePoint or something else, you don't even mind if it's driven by the Search Engine. You don't need this info. You don't even care. The only thing you need is to get your job done. As quick and as good as possible.
The beauty of these scenarios is that they're technology independent. They're true if we talk about SharePoint Search, of course, as I mostly do, but they can be used for anything else. They're generally true, in my experience, depending on the maturity of the organization.
What do you think? Which one(s) can you find in your organization?
In SharePoint 2013, one can create dynamic metadata navigation, using the benefits of both Managed Metadata and Search. The result is a dynamic navigation, build in by a taxonomy, showing the current search results filtered by the current node (with or without children, based on the current configuration).
- Navigation has to be dynamic. When one adds a new term to the term store, it has to get displayed on the navigation (and has to work) immediately.
- On the target page, search results have to get displayed, filtered by the selected navigation item.
(Note: as the results/items are provided by search, they're refreshed by each full or incremental crawl.)
- A configuration parameter is expected to be able to define if the exact matches should be displayed only OR the matches for the children of the selected navigation item too. (For example, when one selects "Germany" above, the values for "Berlin", "Frankfurt" and "Munich" should be displayed or not.)
Steps to achieve this behavior in SharePoint 2013:
- Preparation (create a site and a target page)
- Managed Metadata configuration (Term Set)
- Search configuration
- Site navigation settings
- Insert and customize a Content Search Web Part
For more details and the full description of each step above, please find my Step-by-Step documentation here.
There are more and more SharePoint events in Europe, thus I do more and more speaking here. The biggest upcoming conference is certainly the SharePoint Evolutions Conference in London, April 15-17. As Steve Smith, Event Organizer (Combined Knowledge Ltd.) says:
"Following on from the International SharePoint Conference 2013 is all about the Evolution of SharePoint. With a new version of SharePoint looming and people doing some great things with SharePoint 2010 we bring the two together for the 2013 SharePoint Evolutions Conference. I will be bringing the best experienced people from around the world again and creating track content that shows the same solution based End User sessions that was a huge hit this year as well as session based content on both SharePoint 2010 and 2013. The show is not all about 2013 though and there is a going to be a business track that expands on our hugely successful track this year by presenting case studies of actual deployments and seeing how well it measures against our topics discussed this year. The end users will have multiple tracks again and we will be bringing back the 'pick and mix' track with some great sessions that cross boundaries of technical / business and end user. The IT Pro's and Developers are well looked after as always with the world's top technical experts coming together talking all about SharePoint 2013 and finally the Community track makes a return with UK based companies and consultants doing sessions on real world SharePoint deployments discussing problems found and lessons learned when working with SharePoint in specific scenarios.
Once again for London 2013 I am bringing together the very best group of speakers whose technical expertise and years of experience working with SharePoint makes it the only conference in the world where you will find this group of speakers together in one conference. This year we had 24 SharePoint MVP's, 5 MCM's and a host of Microsoft product team speakers from all over the world.
As always we will be recording every session so that we can produce a post conference DVD pack that has every session so you can watch them all again at your leisure and included on the DVD is every session in audio format so you can listen to them on your phones and media players. We are the only conference in the world to provide the whole conference on DVD so you never miss a session or a demo."
In May, I'm speaking at Conf Sharepoint in Paris. No, I don't speak French, unfortunately, except some basic expressions like Je ne comprends pas or J'aime SharePoint. ;-) But this is the very first French SharePoint Conference in Europe, where four major topics will be discussed: Development, Infrastructure, Governance and Strategy and Customer Experience.
In June, I'm going to Vienna, for SharePoint Konferenz Austria. At this conference, I'm doing three sessions on Search as well as a full-day workshop on SharePoint 2013 Search Capabilities and Features.
Besides these events, I'm doing some online sessions and trainings as well. First in this series is my 4 hours long Online Class on SharePoint 2013 Search Capabilities and Features.
Do you want to see where and when to meet me? Go to the Events page and stay up-to-date! If you want to discuss your Search and/or Content Management challenges, don't hesitate to contact me and I'll be more than happy to schedule a one-to-one session with you, in person at any event or online if you're not around.
Hope to see you soon!
My Search Troubleshooting session is one of the most popular ones, and definitely one of my favorites. I've been working on its use cases from conference to conference, built on my experiences as well as on the questions got from attendees.
One of the most common questions is definitely about the resources used by Search. Using Continuous Crawl and/or many crawl processes and/or frequent crawl schedules and/or big change sets in the content sources, etc. – all makes the resources consumed by Search higher and higher. Besides the most known optimization and scale-out techniques, I get the question very often: how the resources consumed by noderunner.exe can be limited?
The first part of my answer is: Please, do plan your resources in production! Search is often seen as "something" that works "behind the scenes", but it can make some very bad surprises… I'm sure you don't want to see your production farm consuming 99% of the available memory while crawling… So please, plan first. Here's some help for this: Scale search for performance and availability in SharePoint Server 2013.
But you might have some dev or demo environments, for sure, where you cannot have more than one crawlers, running on the App server. It's not recommended in production but absolutely reasonable on a dev farm. But I'm sure you don't want to go to drink a coffee or to have a lunch every time when you run a crawling either… So here are some NOT SUPPORTED and NOT RECOMMENDED tips, for your dev/demo environment ONLY!! Don't do any of them on production, please!!!
- The first one is the easier, and "not-that-bad" configuration: you should simply set the Performance Level of Search to Reduced (or PartiallyReduced, if you don't want to be so rigorous): Set-SPEnterpriseSearchService -PerformanceLevel Reduced
Second one is the one that is strictly not supported and not recommended. Please don't tell Microsoft you've heard this from me ;-) And once again: it's for dev/demo environments ONLY!!!
As you know, several search services run as noderunner.exe on the server(s). They can consume a LOT of memory, but the good news is: you can limit their memory usage! The magic is: go to the folder C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0 and look for a line like this:
<nodeRunnerSettings memoryLimitMegabytes="0" />
The zero means "unlimited" here. The only thing to do is to set to the amount of RAM you'd like to set as a limit for each noderunner.exe processes.
NOTE: Be aware, these settings might make your crawling processes slower!!
I'm excited to announce I'm doing a 4-hour Online Class on Thu, 16 May for those who want to learn about the Search capabilities and features available in SharePoint 2013.
This is a jam-packed class with lots of real world information and demonstrations, with the following outline:
What's New in SharePoint 2013 Search – a Practical Overview
SharePoint 2013 has a lot of new Search features and capabilities - first and foremost the new architecture. In this part, we'll overview these capabilities, including the UI as well as query and content processing.
In this part, we'll walk through the steps of content processing, and will go deep into the crawling and indexing. We'll overview the various crawling options (full, incremental, continuous) and how each of them works and what are the pros and cons of each. Also, we'll use PowerShell to extend the crawling capabilities available on the Admin UI.
As a next step after getting the content crawled, it's important to talk about metadata and Search Schema. You'll get an understanding how it works, how to use them in practice, and also we'll demonstrate some PowerShell script again, to work with crawled and managed properties. As the last step in this part, we'll work with result sources.
Working with Queries
In order to get the proper results, we have to know how to build the query and how they'll get processed. In this part of the webinar, we'll see not only how to build up the proper queries but also how to test them and how to get different result blocks on the Search UI. We'll create Query Rules and Query Block and will use the Query Builder. Also, we'll work with ranking models and will create our custom one.
SharePoint 2013 provides a next generation of Search User Interface with the new Display Templates for its customization. In this part, we'll focus on the customization of Core Results Web Part and Refinement Panel including: create new refiners, display item counts, display custom managed properties on the Core Results, etc.
SharePoint 2013 Search Administration can be done on different levels: besides using Central Administration and PowerShell, search administrators can delegate some day-to-day administration tasks to site collection and site administrators. In this part, we'll go through these features and will build up a comparison of the different levels of search administration.
Search Troubleshooting on different levels
Search troubleshooting has been always complex, mostly due to the complex architecture of Search. This part is all about best practices in troubleshooting, on each level of search, from crawling to the UI. We'll use Developer Dashboard and PowerShell, and we'll give you detailed explanation and step-by-step guidance for each scenarios.
Are you interested, please find more details and register on SharePoint-Videos.com.
After my blog post (Deploying Search Service App by PowerShell – but what about the Search DBs?) a couple of days ago, I've got an interesting question: what to do with a Search Service App that cannot get removed but cannot be used either as there're no DBs created for it.
The reason was pretty simple: some DB issue occurred while creating the Search Service Application, and it got to be inconsistent: the SSA seemed to get created on Central Administration, but it was weird as the SSA Proxy wasn't displayed at all:
When checked the DBs, they were not created either.
All right, after the SQL issues have been fixed, let's delete the SSA and create it again. But when tried to delete, here is an error you get, even if you don't check the "Delete data associated with the Service Applications" option:
Yeah, the Search Service Application cannot get deleted if its DB does not exist. And PowerShell doesn't help in this situation either as it gives you the very same error.
After several rounds of trials here is how I could solve this problem out: Create a SSA with a different name but with the *very same* DB name. (Use PowerShell for this, see my post earlier.)
After this step, you'll be able to delete your previous SSA, but don't forget NOT to use the option "Delete data associated with the Service Applications" as you'll need the DBs in order to be able to delete your second, temporary SSA ;-)
Ps. Since this experience, I've been playing with this on my VM, using several use cases. Turned out the same issue might happen if there's a SQL issue while deleting the Search SSA.
I've been preparing for this review for a LOOOONG time. Not because I was hesitating if the product is good enough (it's more than awesome!) but because I was thinking about the best words to describe my thoughts about it.
As you know, I work as Independent Consultant, with several customers at the same time. And each of these customers has several SharePoint farms, with different features and services. And SharePoint farm documentation is always a challenge…
Here's the point where Acceleratio's Documentation Toolkit for SharePoint comes in: this tool is "designed to help administrators and consultant to automatically generate SharePoint farm documentation, compare farms and track configuration changes."
Here is a list of the features of the features of SPDocKit (for more information please go to the product's web site):
- Generate SharePoint farm documentation
- Explore configuration settings
- Document passwords and product keys
- Compare farms
- Track farm changes
- Automatic snapshots
- Email notifications with configuration changes
- Preview scheduled tasks
First, let me mention SPDocKit's licensing and installation: there're two licensing models, you can buy it for your own farm OR you can have a consultant license (like me). In this case, you're allowed to run SPDocKit on as many farms as you want, even without installing it! For example, you can take it and run on your customer's farm and generate a full farm documentation with a few clicks in minutes. It's more than amazing!
Second, the documentation it generates. Here's what I've got on my demo environment:
In Farm Topology, you can even see your servers on a Visio-like diagram. In my two-server farm it's not a big deal, but in bigger environments it might be a much stronger benefit:
There's a similar review of your site collections, services running on your servers, etc. In the Site Explorer, you can also review the features and solutions by site collections.
In Permission Explorer, you can explore loaded SharePoint permissions settings on Site Collection and Site levels. For example, this is the info of my user on my demo Search site:
There's a big feature called where you can check a lot of OOTB administration Best Practices, and also you can create your own ones and run reports on each. Through the nice and clean visualization, it makes administrators' job much easier:
Finally, as someone who works with Search a lot, let me highlight some Search-related features too. In the Farm Explorer, you can overview the Service Applications, including Search, of course. You can overview and document the search settings, countent sources, crawl rules(!), etc. – and my most favorite one: Managed Properties! This has been always a big issue, where I've been using PowerShell, and now, it's here, I can generate this list and export to a document in seconds:
As you can see, there're TONS of options in SPDocKit. But at the same time, it's very easy and obvious to use.
It helps a LOT, saves a LOT of time when you have to document (and/or compare) your SharePoint environments.
If you like this post and would like to try the Documentation Toolkit, just go to their web site and download its trial or buy the product immediately J
Its licensing is as simple as having Farm and Consultant subscriptions (as I have mentioned above), with two levels of packages: Starter and Premium:
So, how do you like it?
First of all, I have to admit, I owe a beer to both Todd and Spence for the script, I use the very same for deploying Search in SharePoint 2013:
# Get App Pool
$saAppPoolName = "SharePoint Service App Pool"
# Search Specifics, on single server farm
$searchServerName = (Get-ChildItem env:computername).value
$serviceAppName = "Demo Search Service Application"
$searchDBName = "DEMO_SearchService_DB"
# Grab the Appplication Pool for Service App
$saAppPool = Get-SPServiceApplicationPool $saAppPoolName
# Start Search Service Instances
Write-Host "Starting Search Service Instances..."
# Create the Search Service Application and Proxy
Write-Host "Creating Search Service Application and Proxy..."
$searchServiceApp = New-SPEnterpriseSearchServiceApplication -Name $serviceAppName -ApplicationPool $saAppPoolName -DatabaseName $searchDBName
$searchProxy = New-SPEnterpriseSearchServiceApplicationProxy -Name "$serviceAppName Proxy" -SearchApplication $searchServiceApp
# Clone the default Topology (which is empty) and create a new one and then activate it
Write-Host "Configuring Search Component Topology..."
$clone = $searchServiceApp.ActiveTopology.Clone()
$searchServiceInstance = Get-SPEnterpriseSearchServiceInstance
New-SPEnterpriseSearchAdminComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchContentProcessingComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchAnalyticsProcessingComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchCrawlComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchIndexComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
New-SPEnterpriseSearchQueryProcessingComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
One might ask, what about the Search DB names?
If you create your Search Service Application (SSA) on the Central Administration, there's no option for customizing the DB names, and you'll end up with something like this (each ending with a GUID):
The problem with this is that it's not "admin friendly" at all. If you happen to have a SQL server hosting the DBs of more than one SharePoint farm, it'll be a nightmare to figure out which DB goes to which farm.
One option is to prefix the SSA's name with the farm/server's name, like "DEMO2013 Search Service App", as the DB names are based on the SSA's name. If you give unique names to your SSAs on the different farms, you're one step closer to be able to recognize your DBs.
In PowerShell above, you can see there's only one DB name (see highlighted). Other DBs (AnalyticsReportingStoreDB, CrawlStoreDB, LinksStoreDB) will take care of themselves, and will get the very same prefix as your SSA DB. And there're no GUID postfixes:
I've been working with a brand new SharePoint 2013 farm where Search Service has been published and working fine with some content sources.
At least, it's working until I try to open either the Crawl Health Reports or the Query Health Reports, as I get this error there:
"The chart cannot be rendered. This may be due to a misconfiguration of the Microsoft SharePoint Server State Service. For more information, contact your server administrator."
Let's check the State Service. For this, you can either go to Central Administration or use PowerShell (Get-SPStateServiceApplication). If the PowerShell response is empty and/or there's no State Service on your Searvice Applications list, you have to be sure, you really don't have State Service configured on your farm.
Let's do it now!
You can either use Central Admin again, or PowerShell:
$stateName = "My State Service"
$stateDBName = "SP2013_State_Service_DB"
$stateDB = New-SPStateServiceDatabase -Name $stateDBName
$state = New-SPStateServiceApplication -Name $stateName -Database $stateDB
New-SPStateServiceApplicationProxy -Name "$stateName Proxy" -ServiceApplication $state –DefaultProxyGroup
If you check again, you should see your State Service now, and here you go: your Crawl and Query Health Reports are working fine now!