2016-05-14 3 views
0

Ich weiß nicht wirklich, wie MoreLikeThis Abfrage funktioniert. Ich habe diese Frage, nehme an, ich habe zwei Dokumente, ich habe einige Felder und ein Feld für Land. Jetzt hat ein Dokument ein Länderfeld mit dem Wert "Australien" und ein anderes Dokument hat ein Länderfeld mit dem Wert "England".MoreLikeThis Abfrage, Feldpriorität?

In Anbetracht, alle anderen Felder sind identisch, jetzt, wenn MoreLikeThis Query auf ein Dokument ausgeführt wird, wird es das andere zurückgeben? Nur Länderfelder sind unterschiedlich.

Und gibt es eine Möglichkeit, ein Feld maximale Priorität zu geben? wie in diesem Fall "Land", so dass Lucene Morelikethis Produkte spezifisch für ein Land zurückgeben?

Antwort

0

Ich würde eine verwenden, um die MLT-Abfrage mit einer Abfrage für den gewünschten "Land" -Wert zu kombinieren.

Zum Beispiel:

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