目前我确实喜欢这样:
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功能。所以只要你没有遇到任何性能问题,你就应该这样。