PRB: A Full-Text Search May Not Return Any Hits If It Fails to Index a File (308771)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q308771

SYMPTOMS

A full-text search (FTS) may fail to index a file after the file has been loaded into a text or image column. Therefore, if you execute a full-text search with a keyword that you know is in one of the files you have imported into the text or image column, you may not get any rows returned.

The following sequence of messages is printed in the Application Log of the Event Viewer when the Microsoft Search (MSSearch) service attempts to index the column that contains the file that was loaded into the text or image column:
11/13/2001,9:52:38 AM,Microsoft Search,Information,Gatherer ,3019,N/A,RAJ933,The crawl on project <SQLServer SQL0000700005> has started. 
11/13/2001,9:52:38 AM,SQLFTHNDLR,Information,None,2001,N/A,RAJ933,"One or more documents stored in image columns with extension 'DOC' did not get full-text indexed because loading the filter failed with error '0x1'. Note: These documents will not be passed to MSSearch for indexing, and therefore this failure will not be reflected  in the end of crawl summary statistics. "

11/13/2001,9:52:59 AM,Microsoft Search,Warning,Gatherer ,3035,N/A,RAJ933,"One or more warnings or errors for Gatherer project <SQLServer SQL0000700005> were logged to file <C:\Program Files\Microsoft SQL Server\MSSQL\FTData\SQLServer\GatherLogs\SQL0000700005.1.gthr>. If you are interested in these messages, please, look at the file using the gatherer log query object (gthrlog.vbs, log viewer web page). "

11/13/2001,9:53:01 AM,Microsoft Search,Information,Gatherer ,3047,N/A,RAJ933,The end of the incremental crawl for project <SQLServer SQL0000700005> has been detected. The Gatherer successfully processed 2 documents totaling 0K. It failed to filter 1 documents. 2 documents were modified. 0 URLs could not be reached or were denied access. 
11/13/2001,9:53:01 AM,Microsoft Search,Information,Indexer ,7049,N/A,RAJ933,The index build for project <SQLServer SQL0000700005> has completed.
					
In the preceding set of messages, the key message to look for in the Application Event Log is the Warning message.

The following message appears in the gatherlog for SQL Server 2000 RTM and SQL Server 2000 Service Pack 1:
11/13/2001 9:53:00 AM	mssql75://sqlserver/75d7831f/00000002	Add	Error fetching URL, (800700e9 - No process is on the other end of the pipe.  )

					
Starting with SQL Server 2000 Service Pack 2 (SP2), the gatherlog shows this information:
11/15/2001 2:59:28 PM mssql75://sqlserver/78b3efca/00000002 Add Error fetching URL, (80040d12 - An unexpected message has been received from the filtering process. The URL will be retried, but if this occurs frequently, your system is low on resources. Free some system resources, or start the crawl again later when resources are available. )

CAUSE

The MSSearch service, upon starting, reads the FilterProcessMemoryQuota value in the following registry key to determine how much memory it can assign to the MSSDmn process:

HKLM\Software\Microsoft\Search\1.0\Gathering Manager

The preceding registry value is used to determine how much memory MSSDmn uses to perform text or image filtering. The FilterProcessMemoryQuota value is only used to protect against excessive memory usage by the filter daemon. By default, FilterProcessMemoryQuota is set to 25 MB in SQL Server, and in Sharepoint Portal Server it is 40 MB. The actual memory usage depends on the type of filter used. In the case of SQL Server, the actual memory usage depends on how much memory SQL OLEDB needs, and the protocol handler, which may or may not depend on the size of the document being full-text indexed. If, during the filtering of the text or image column, the amount of memory required exceeds the value set in the preceding registry key, the MSSDmn process terminates and full-text indexing fails for that document.

RESOLUTION

To resolve this problem you must increase the memory quota allocated to the MSSDmn process. Unfortunately, there is no way to calculate directly from the size of the document to be full-text indexed how much memory the filter process needs. The memory quota only exists to protect against badly written filters, and they do spike to large amounts if some bogus size contains a negative number. The quota itself can be made larger, as long as it is finite. However, in general you probably want to set the memory to 10 MB - 15 MB larger than the current value if full-text indexing fails with the error messages shown in the "Symptoms" section of this article. The following steps describe how you can increate the memory setting:

WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.


  1. Stop the MSSearch service.
  2. Start the Registry Editor (Regedt32.exe). To start the Registry Editor, click Start, and then click Run.
  3. In the Run dialog box, type:

    Regedt32

    Click OK.
  4. Locate the FilterProcessMemoryQuota value in the following key in the registry:

    HKLM\Software\Microsoft\Search\1.0\Gathering Manager

  5. Double-click the FilterProcessMemoryQuota value.
  6. Increase the FilterProcessMemoryQuota value. Please note that the amount of memory is in bytes, and the value itself is represented in hexadecimal.
  7. Click OK.
  8. Quit the Registry Editor.
  9. Stop, and then restart the Microsoft Search service.
If multiple increases to the memory quota for the MSSDmn process still fail to resolve the issue, you must contact the vendor of the filter to find out if there are any memory issues with the filter itself.

MORE INFORMATION

Please note that in addition to the memory allocated to SQL Server, Microsoft recommends that you reserve a minimum of 15 MB of RAM for the Microsoft Search service and a maximum of 512 MB of RAM be allocated for the Microsoft Search service (including the MSSDmn process).

The gatherlogs can be found in the following directory, assuming you have a default instance of SQL Server 2000:

C:\Program Files\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\GatherLogs

The Gthrlog.vbs scripting tool is located in the following folder:

C:\Program Files\Common Files\System\MSSearch\Bin

The following command is an example that shows you how to use the Gthrlog.vbs file and redirect the output to a text file:
C:\Program Files\Common Files\System\MSSearch\Bin>cscript gthrlog.vbs "C:\Program Files\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\GatherLogs\SQL0000700005.1.gthr" > c:\custdata\gather751.log
				

REFERENCES

For additional information on how to read the gatherlog, click the article number below to view the article in the Microsoft Knowledge Base:

289653 SPS: How to Use the Gthrlog.vbs Utility to View Gatherer Logs


Modification Type:MajorLast Reviewed:10/3/2003
Keywords:kbpending kbprb KB308771