2016-05-14 11 views
0

私は本当に知っていません、どのようにMoreLikeThisクエリが動作します。私はこの質問を持っています、私は2つの文書を持っていると思います。私はいくつかのフィールドと1つのフィールドを持っています。今では、1つの文書に 'Australia'という値の国フィールドがあり、他の文書には 'England'という値の国フィールドがあります。MoreLikeThis Query、field priority?

他のフィールドはすべて同じですが、ドキュメント上でMoreLikeThisクエリを実行すると、もう1つのフィールドが返されますか?国のフィールドのみが異なります。

また、フィールドに最大優先度を与える方法はありますか?この場合のように、 '国'は、luceneが国に特有のアイテムをより多くリクルートするようにしますか?

答えて

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();