dtSearch .NET Standard API 2021.02
WordListBuilder provides a way to list words, field names, or field values in an index
WordListBuilder is intended for quick enumeration of words, field names, or field values in an index.
Two ways of listing words are provided, one for listing the words before and after a word in an index, and one for listing words that match a search term in an index.
The scrolling list of indexed words that updates as a user enters a search request in dtSearch Desktop is implemented using WordListBuilder's ListWords method. The "Browse Words" dialog box in dtSearch Desktop that lists words matching an expression is implemented using the ListMatchingWords method.
Listing of field values only lists values of fields that were designated as EnumerableFields when the documents were indexed.
For speed, WordListBuilder does not actually enumerate the references for each word and instead relies on counts incrementally stored in the index. Therefore, the reported counts may include artifacts of the indexing process such as reindexed or removed documents, so the counts may be higher than the actual count of references in the index. Compressing an index will remove these extra references.
To improve performance in cases where the same field values have to be enumerated repeatedly with different SearchFilters, you can set the flag dtsWordListEnableFieldValuesCache in Flags. This will make ListFieldValues calls from the same WordListBuilder faster at the cost of substantial memory use, because the field values and occurrences in the index will be stored in memory until the WordListBuilder is deleted. The amount of memory required is proportional to the number of documents in the index times the number of values in the enumerable field that is cached.