Lucene.net搜索:返回具有唯一字段值的结果

时间:2014-02-12 13:56:49

标签: c# lucene.net

我正在编写一个基本的Lucene.Net应用程序来索引什么本质上是论坛帖子。为简化起见,每个Post文档都有一个URL和一些Content。对于每个给定的线程,我将每个Post索引为一个单独的文档(将整个线程索引为单个文档,在搜索时返回太多误报)。

我遇到的问题是处理我的结果集中具有相同Post的多个URL文档。当我搜索并返回10个结果时,我希望每个结果都引用不同的URL

目前,我有以下几点:

// setup
StandardAnalyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
FSDirectory directory = FSDirectory.Open(indexLocation);
IndexSearcher searcher = new IndexSearcher(directory);
parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_30, "body", analyzer);

// search
Query query = parser.Parse(queryString);
TopDocs topDocs = searcher.Search(query, null, 10);

但是,在返回的十个结果中,可能只有7个唯一URLs。我已经看了再次搜索,返回较大的结果集,丢弃前10(类似于分页)之前丢弃这些重复,直到我有10个独特的URLs,但是这引起了这样的问题时,我应该停止,因为有没有更多的结果?等

感觉应该在TopDocs topDocs = searcher.Search()点进行过滤,以返回10个具有唯一URLs的结果。我在这周围找不到任何东西(也许我没有使用正确的术语)但是我确信很多其他应用程序必须先解决这个问题...这样的事情是否已经存在,或者任何人都可以提供指针如何实施这个?

0 个答案:

没有答案