目前我确实喜欢这样:

IndexSearcher searcher = new IndexSearcher(lucenePath);
Hits hits = searcher.Search(query);
Document doc;
List<string> companyNames = new List<string>();

for (int i = 0; i < hits.Length(); i++)
{
    doc = hits.Doc(i);
    companyNames.Add(doc.Get("companyName"));
}
searcher.Close();

companyNames = companyNames.Distinct<string>().Skip(offSet ?? 0).ToList();
return companyNames.Take(count??companyNames.Count()).ToList();

如您所见,我首先收集所有字段(数千个),然后对它们进行区分,可能会跳过一些字段并取出一些字段。
我觉得应该有更好的办法。

最佳答案

老实说,我不确定是否有,因为lucene没有提供“独特”的功能。我相信有了solr,你可以使用facet搜索来实现这一点,但是如果你想在lucene中实现这一点,你必须自己编写一些facet功能。所以只要你没有遇到任何性能问题,你就应该这样。

10-02 11:37