2016-05-14 51 views
0

我真的不知道,MoreLikeThis查询是如何工作的。我有这个问题,假设我有两个文件,我有一些领域和一个国家的领域。现在,一个文件的国家字段值“澳大利亚”,其他文件的国家字段值“英格兰”。MoreLikeThis Query,字段优先?

考虑到,现在所有其他字段都是相同的,如果MoreLikeThis Query在文档上运行,它会返回另一个吗?只有国家领域是不同的。

而且,有没有什么办法可以赋予字段最大优先级?像在这种情况下,'国家',这样lucene返回一个国家特有的morelikethis项目?

回答

0

我会使用BooleanQuery来结合MLT查询和所需的“国家”值的查询。

例如:

MoreLikeThis mlt = new MoreLikeThis(reader); 
Query mltQuery = mlt.like(docNo); 
Query countryQuery = new TermQuery("country", "england"); 
Query finalQuery = BooleanQuery.Builder() 
    .add(mltQuery, BooleanClause.Occur.SHOULD) 
    .add(countryQuery, BooleanClause.Occur.MUST) 
    .build();