我正在尝试使用solr
比较文档的内容。我只需将整个文档内容用作query
即可。这有效,直到文档变大。一个文档可以包含多达15k字或更多。这导致最大boolean
子句异常,其默认值为1024.现在我当然可以增加此值,但即使我将其增加到5k,仍然无法比较具有大内容的文档。 / p>
Lucene
是否适合此类任务?如果是这样,我该怎么做才能达到上述要求。如果没有,那么将一个文档的内容与其他文档进行比较的替代方法是什么?
答案 0 :(得分:0)
我认为MoreLikeThis
。 MoreLikeThis
将文档内容修剪为更高频率的条款,然后只搜索那些可以解决大量术语(并提高性能)的文档内容。如果您要搜索类似于外部来源的文档:
MoreLikeThis mlt = new MoreLikeThis(indexreader);
Query query = mlt.like(someReader, "contents");
Hits hits = indexsearcher.search(query);
或者,如果搜索索引中已有的文档:
MoreLikeThis mlt = new MoreLikeThis(indexreader);
Query query = mlt.like(documentNumber);
Hits hits = indexsearcher.search(query);
Solr还包含MoreLikeThis handler。