The index will be kept on the Index Server, so why do we need a Search database and what is the point of it in SharePoint 2007? I would like to understand the basic concept of SharePoint Search.

Below are a few questions:

  1. Why do we need a search DB?
  2. What is the use of it?
  3. Why it is consuming more DB space compared with other SharePoint DBs?
  4. When it will consume more CPU?
  5. What are all the important tables to know?
  6. Do we need to have an individual DB instance to keep it?

Please help me with your thoughts.

  • Can you clarify 4. as I could not interpret what you meant. – Charles Lee Apr 23 '10 at 11:01
  • In a physical server, we do have Configuration DB, Content DB (CA-only) and Search DB, suspect that number connections for a Search DB goes high while performing Incremental Crawl(only) also sometimes it throws "connection timedout" error, is that expected ? – Karthikeyan Apr 24 '10 at 4:13
  1. Yes we do need it. Search indexing is really made up of two items: the actual index file which contains keyword AND the search database that contains metadata. The two are combined when a search is initiated
  2. The search database contains settings related to search (content sources, confguration, all that good stuff). In addition it will also contain the list of url's that will be passed to the crawler when a content source is crawled. In addition it also contains all of the metadata that is crawled.
  3. It consumes most DB space because there are a hell of a lot of keywords along with a mapping to the various items and locations of the keywords within those items.
  4. Hmm I don't really understand that either, obviously though when a crawl is initiated it will be writing new metadata values and mappings to the search db, so there will probably be more cpu usage then
  5. Generally I don't even glance at the structure of any databases within SharePoint, there is a whole API to interface with
  6. Hmm again i might not be reading the question right but yep you need to have that database up otherwise you cant actually perform queries..

Hopefully this helps and I haven't said anything incorrect..let me know if I have :)

| improve this answer | |
  • Is Index stored in a flat file on the Index server? what would be the cotent of the file ? – Karthikeyan Apr 23 '10 at 17:42
  • The index file is built on the server and then pushed up to the query servers, but both are in a flat file in a proprietary format. What it contains is a list of words (keywords) and the locations of where those keywords reside within the content that is indexed. – MichalPisarek Apr 23 '10 at 19:15
  • so, Crawler reads the Information from the Source (all the URLs), uses SQL Server DB instance to perform indexing, updates the index file is on the Index Server and upon the completion Index server push the index file to the Query server. <br> User's Search query goes to the Search Engine. After doing all the other good stuff, Search engine do a query against the Index file is on the query server and returns the result to the end-user. is that correct ? – Karthikeyan Apr 24 '10 at 4:25
  • Have a look at blogs.msdn.com/spses/archive/2010/03/02/… is has a really good explanation – MichalPisarek Apr 25 '10 at 2:04
  • Understood the concept almost however few more questions to be answered, please help with the below as well. Why are we using flat file (text file) to store the Index? and not using SQL DB to store the Index, basically SQL DB is highly efficient than the normal flat file, so what is the reason behind this ? Lets say, Incremental crawling is scheduled to execute in every 15mins and it completes the execution within 2mins before a sec, now user deletes a document from the lib before doing a quick search. so, does the document appear in the search result, if not how sharepoint knows that ? – Karthikeyan Apr 25 '10 at 6:29

The simple, one-word reason for all of the above is (I believe) scalability.

If you have a SharePoint site with tens of thousands of users, all performing possibly dozens of searches per second, you can vastly improve search performance by farming off the Search Database to another server or place its tablespace onto another drive array.

| improve this answer | |
  • Is indexing done at SQL End and updates the index file is on the Index server ? or Search Engine (MSsearch.exe) is used to perform Indexing and SQL just provides information (Schema, contentsource, scope, metadata, keyword, bestbets..) to accomplish this ? – Karthikeyan Apr 24 '10 at 7:44
  • I found the answer and that is "The Query processor is in the WFE opens a Query Pipe to the query machine, indexer plug-in on the query machine retrieves the results from the Full-Text index. Finally, Query processor joins results from the Search DB and full text index. It takes the DocIds and does the join to the SearchDB to access the document properties (Title, Display URL, doc format, size, etc). – Karthikeyan Apr 25 '10 at 6:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.