我正在编写一个基本的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
的结果。我在这周围找不到任何东西(也许我没有使用正确的术语)但是我确信很多其他应用程序必须先解决这个问题...这样的事情是否已经存在,或者任何人都可以提供指针如何实施这个?