2017-06-19 6 views
1

Ich versuche, die mehr wie dieser Abfrage-Parser auf meinem Testsystem arbeiten zu bekommen. Das Testsystem hat SOLR cloud 6.5.0 installiert. Der MLT-Handler wird mit folgenden Konfiguration aktiviert:SOLR mehr-wie-dieser Abfrage-Parser gibt keine Ergebnisse zurück

<requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> 
    <lst name="defaults"> 
     <str name="mlt.qf">search_text_st</str> 
     <str name="mlt.fl">search_text_st</str> 
     <int name="mlt.minwl">4</int> 
     <int name="mlt.maxwl">18</int> 
    </lst> 
</requestHandler> 

Wenn ich Abfrage für Dokument ähnlich ein bestimmtes Dokument mit dem Handler, ich erwartete Ergebnisse. Zum Beispiel:

http://localhost:8983/solr/MyCloud/mlt?q=id:123

Die obige Abfrage wird zurückgehen:

"response":{"numFound":361,"start":0,"maxScore":113.24594,"docs":[...]} 

Wenn ich jedoch eine äquivalente Abfrage der MLTQParser mit {!mlt qf=search_text_st fl=search_text_st minwl=4 maxwl=18}123 versuchen verwenden, erhalte ich keine Ergebnisse:

http://localhost:8983/solr/MyCloud/select?q=%7B!mlt+qf%3Dsearch_text_st+fl%3Dsearch_text_st+minwl%3D4+maxwl%3D18%7D123

Die Antwort sieht so aus:

Ich habe bisher nichts getan, um MLTQParser zu aktivieren oder zu konfigurieren, aber es scheint aktiviert zu sein, weil ich einen Fehler bekomme, wenn ich eine Dokument-ID verwende, die nicht existiert.

Irgendeine Idee, warum das nicht funktioniert?

Antwort

0

Ich fand schließlich heraus, warum das scheiterte. Das Feld search_text_st wurde mit copyField erstellt. Der Cloud MLT Query Parser verwendet den Realtime-Get-Handler, um die für Keywords zu gewinnenden Felder abzurufen. Aufgrund der Art und Weise, wie der Realtime-Get-Handler implementiert wird, gibt er keine Daten für Felder zurück, die mit copyField gefüllt wurden. (siehe https://issues.apache.org/jira/browse/SOLR-3743)

Das Ändern der Konfiguration zur Verwendung der Quellfelder hat es funktioniert.

Verwandte Themen