2016-05-14 84 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();