How to fix Sharepoint Foundation 2010 Search returns no results

SharePoint Foundation 2010 includes basic searching features. Despite all rumors and recommendations to upgrade to higher level searching packages, the basic SharePoint search works quite well … and it’s very useful.
If your SharePoint server is not returning search results, the following may help you resolve the issue. It’s important to create the right accounts, enable the right services, assign the accounts to these services and finally attach the search server to your web applications.
Let’s begin …
  1. You need to create domain accounts for Searching and Crawling. Using the Farm Account (or default accounts) is not recommended. In our example we will use “spSearch” and “spCrawl”. Use complex passwords! These domains accounts should only be standard users, no administrative privileges should be applied.
  2. Log into the SharePoint Central Administration Page
  3. CA > Security > General Security > Configure Managed Accounts > Register Managed Account.
    • Enter in “domainspSearch” and the password you chose
    • Click “OK”.
    • You should now see this account in the Managed Account list
  4. CA > System Settings > Servers > Manage Services on Server > SharePoint Foundation Search > Start.
    • Service Account -> “DomainspSearch”
    • Content Access Account (Crawl) -> “DomainspCrawl” and the password you chose
    • Leave everything else as defaults (you can change the Database Name if you are having issues)
  5. CA > Security > General Security > Configure service accounts
    • Choose “Windows Service -> SharePoint Foundation Service”
    • Choose “DomainspSearch” for the account selection
    • Click “OK”
  6. CA > Application Management > Manage Content Databases
    • This is important! For each site you want automatically crawled, you must assign the search server.
    • In the top right corner under “Web Application”, choose the web applications to be crawled, one at a time followed by a click on the “database name” column once they are loaded.
    • In the profile page, change the “Search Server” and “Preferred Server for Timer Jobs” to your server.
    • Click “OK”
    • Repeat for any other Website Applications you wish crawled
  7. CA > Monitoring > Timer Jobs > Review Timer Jobs > SharePoint Foundation Search Refresh
    • Choose “Run Now” to begin indexing your web applications (sites)
    • This can take several hours depending on the size of your database(s). Please be patient.
  8. If you’re feeling eager and have a background in SQL, you can use the SQL Management Studio to check the progress. If you are not familiar with SQL, don’t be a hero … this can cause major damage.
    • Load the SQL Management Studio
    • Expand the search database created in the earlier steps (typically WSS_Search_%hostname%)
    • Right click the database -> new query
    • Enter in the following Query:select * from msscrawlhostlist (execute)

You will be presented with a table of results including a column for Hostname and SuccessCount.
SuccessCount increases as it indexes each page.

    • You can also lookup the crawl summary with:select * from MSSCrawlURLLog
    • And should there be any error codes in the MSSCrawlURLog, they can be referenced with:select * from MSSCrawlErrorList where ErrorID = ‘<ERRORID>’
If you run into issues where things are still not being crawled, i would suggest deleting the spCrawl and spSearch from SharePoint and Active Directory, re-creating them from scratch, repeating this entire process, and changing the “database” value in step “3”. This will re-create the crawling database from scratch.
I hope it helpful to you!

How to configure SharePoint Foundation Search

This is a guide which will help you to configure SharePoint Foundation Search.

Firstly you need to turn on the Foundation Search Service.  You do that with the following:

  1. Open Central Administration
  2. Go to System Settings -> Manage services on server
  3. Click on SharePoint Foundation Search
  4. Assign a service account to start the service (this is a managed account, so select on or add a new one)
  5. Assign a content access account (more on that below)
  6. Enter a database server and database name (or accept the defaults)
  7. Choose an indexing schedule
  8. Click Ok
  9. When you return to the Manage services on server page, click Start next to SharePoint Foundation Search

That’s only the first part, however.  You’ve got the Search service running and the indexer on a schedule, but you actually have not yet identified what to index. The next thing that you need to do grant the content access account (that you entered above) read access to your applications.  Do next steps:

  1. Go to Central Administration
  2. Go to Application Management -> Manage web applications
  3. Highlight the web application that you want foundation search to index
  4. Click User Policy in the ribbon
  5. In the Policy for Web Application box that appears, click Add Users
  6. Leave the Zone selection at (All zones), click Next
  7. In the Choose Users box, enter the username of the Content Access Account you used above when you configured SharePoint Foundation Search
  8. Check Full Read for permissions
  9. Click Finish

Now you have the indexer running and the content access account has privileges to read all of the content in your web application.  But you still haven’t identified the content to crawl.  That’s done at the content database level. Do this:

  1. Go to Central Administration
  2. Go to Application Management -> Manage Content Database Settings
  3. Click on the content database that contains the site(s)/site collection(s) that you want to index
  4. In the settings for that content database, in the section Search Server, use the drop down list to select the server with SharePoint Foundation Search service running
  5. Click OK.

You have turned on and set a schedule for indexing, granted permissions for the crawl account, and identified content to crawl.  More than likely for configure SharePoint Foundation Search, you’re done.  Based on the schedule that you created in the first part, and the amount of data that you need to crawl, you may need to wait a little while to check to see if everything is working.