Last Reviewed: March 4, 2012
Applies to: dtSearch Engine 7.60 and later
The dtSearch Engine's WordListBuilder object can be used to quickly enumerate document properties for documents retrieved in a search. This feature can be used to implement a faceted search interface, in which search results summarize values and document counts for one or more categories of document metadata after a search.
When documents are indexed, set IndexJob.EnumerableFields to a comma-separated list of field names. EnumerableFields are fields whose values will be stored in the index in a way that permits fast enumeration. All EnumerableFields are also StoredFields. The EnumerableFields setting has no effect on document retrieval.
(1) In SearchJob, set WantResultsAsFilter=true so a SearchFilter will be returned along with the SearchResults. The SearchFilter will be a bit vector identifying all of the documents that match the search request. (If you are executing a search specifically to create a SearchFilter and do not need SearchResults from the search, set the flag dtsSearchFastSearchFilterOnly in SearchJob to improve search speed.)
(2) To enumerate the values of a field for all documents retrieved in the search, create a WordListBuilder object and set it up as follows
- Set IndexPath to the index that was searched.
- Call WordListBuilder.SetFilter() to limit the values returned to the documents that were returned from the search.
- Call WordListBuilder.ListFieldValues() with the field name to enumerate.
A sample application demonstrating EnumerableFields is installed here:
C:\Program Files\dtSearch Developer\examples\cs2\ListFields
To use the sample,
(1) Build an index of some faceted data with one or more fields listed in EnumerableFields (enter * under EnumerableFields to make all fields enumerable)
(2) Use the Search and Browse Fields dialogs to search and browse field values within the results of a search.
For API documentation, see WordListBuilder.ListFieldValues and IndexJob.EnumerableFields in C:\Program Files\dtSearch Developer\help\dtSearchNetApi2.chm
Click here for information on a faceted search dtSearch Engine add-on developed by Contegra Systems.
For a developer tutorial on implementing a faceted search user interface, please see these two articles at CodeProject.com:
Faceted search (1)
Faceted search (2)