更喜欢这个查询,字段优先级?

时间:2016-05-14 22:28:38

标签: lucene

我真的不知道,MoreLike这个查询是如何工作的。我有这个问题,假设我有两个文件,我有一些字段和一个国家字段。现在,一个文档的国家/地区字段的值为“澳大利亚”,而其他文档的国家/地区字段的值为“英格兰”。

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

并且,有没有办法给予字段最高优先级?就像在这种情况下,'国家',以便lucene返回更多特定于一个国家的项目?

1 个答案:

答案 0 :(得分: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();