When using the KeywordQuery-class from the SharePoint SDK, you may have seen the members EnableStemming, EnableUrlSmashing and IgnoreAllNoiseQuery. Unfortunately the SharePoint SDK does not give us any description of, what the members do.

The "Microsoft Office SharePoint Server 2007 Administrator’s Companion" (Microsoft Press, ISBN 978-0735622821) gives a short explanation of these members (You should read this book. It gives a very good introduction in SharePoint Technology and MOSS 2007):

Enable Search Term Stemming

By default, stemming in the result set is turned off, even though the indexer performs stemming on inbound words into the index. For example, if the crawler crawls the word "buy", the indexer will stem the word and include "buy", "buying", "buys" and "bought". But in the result set, by default, if the query term is "buy", the result set will only display content items that contain the word "buy". If you select to enable search term stemming, then, in this scenario, the result set will contain content items that include the stemmed words for "buy". You’ll want to enable this if you want the result set to include content items that might only have stemmed forms of the query terms.

Permit Noise Word Queries

This is a feature that allows noise words in one language to be queried in another language when working in a cross-lingual environment. For example, "the" in the ENG language is a noise word, but it’s equivalent in another language might not be a noise word. So you enable the permit noise word queries so that a user who searches on "the" will obtain content items in other languages where "the" is not considered a noise word.

Enable URL Smashing

In this feature, we take the query and "smash" the query terms together and then see if there is a URL that matches exactly the smashed query terms. For example, if someone searches on "campus maps" and there is an intranet Web site with the URL http://campusmaps, then this URL will become the first in the result set. This is different from URL Matching in that the smashed query terms must match exactly the URL, whereas in URL Smashing, the query terms only need to match a portion of the URL.

When instantiating the KeywordQuery-class, you will see these default values:

EnableStemming = false

IgnoreAllNoiseQuery = true

EnableUrlSmashing = true