public void BuildAutoCompleteIndex()
{
// use a custom analyzer so we can do EdgeNGramFiltering
var analyzer = new AutoCompleteAnalyzer();
using (var writer = new IndexWriter(m_directory, analyzer, true, IndexWriter.MaxFieldLength.LIMITED))
{
writer.MergeFactor = 300;
writer.SetMaxBufferedDocs(150);
// go through every word, storing the original word (incl. n-grams)
// and the number of times it occurs
foreach (var hotel in _hotels)
{
if (hotel.Name.Length < 3)
continue; // too short we bail but "too long" is fine...
// ok index the word
// use the number of documents this word appears in
int freq = hotel.SearchCount;
var doc = MakeDocument(hotel, freq);
writer.AddDocument(doc);
}
writer.Optimize();
}
// re-open our reader
ReplaceSearcher();
}