Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将更多类似Lucene的内容限制在我文档的一个子集_Java_Search_Lucene_Morelikethis - Fatal编程技术网

Java 将更多类似Lucene的内容限制在我文档的一个子集

Java 将更多类似Lucene的内容限制在我文档的一个子集,java,search,lucene,morelikethis,Java,Search,Lucene,Morelikethis,我正在使用Lucene为我的网站内容编制索引,并提供搜索工具。我还使用Lucene的MoreLikeThis为站点生成“相关页面”功能。我的网站是多语言的,所以我需要一次将更多的语言限制在一种特定的语言上 有人知道怎么做吗?返回一个查询对象。 MoreLikeThis mlt=新的MoreLikeThis(ir) 读卡器目标=…//要查找与之相似的文档的原始来源 Query Query=mlt.like(目标); 您可以创建第二个查询来检查语言。然后使用包装这两个查询,您可以创建一个布尔查询,

我正在使用Lucene为我的网站内容编制索引,并提供搜索工具。我还使用Lucene的MoreLikeThis为站点生成“相关页面”功能。我的网站是多语言的,所以我需要一次将更多的语言限制在一种特定的语言上

有人知道怎么做吗?

返回一个查询对象。
MoreLikeThis mlt=新的MoreLikeThis(ir)
读卡器目标=…//要查找与之相似的文档的原始来源
Query Query=mlt.like(目标);

您可以创建第二个查询来检查语言。然后使用包装这两个查询,您可以创建一个布尔查询,如下所示:

BooleanQuery BooleanQuery=新的BooleanQuery()
添加(MoreLikeThisQuery,booleansclause.occure.MUST)
添加(languageQuery,BooleanClause.Occurse.MUST);


不是很高效,但是如果你有一个小的语料库,它将完成工作

最后,我将其拆分为多个索引,然后执行MLT查询。否则的话,这个请求就太重了。我希望Lucene开发人员会这样做,如果您当前正在所有内容上运行MLT,那么添加语言查询不会使性能恶化太多(MLT比简单的过滤器重得多)。一个真正有效的解决方案将首先过滤语言,然后让MLT只对过滤后的文档集进行操作(需要研究MLT在内部如何工作,看看这是否可行)。我对此也很感兴趣,只是在我的用例中,有数千个子集都应该进行分离的相关性计算-/在进一步阅读代码时,我怀疑这需要对索引甚至索引格式进行更改。看起来术语只存储一次&全局存储,带有文档计数。另一种方法可能是定制IndexReader,每次都进行docFreq计算,但我不知道成本是多少!