Frage

Ich möchte derzeit mehr wie diese Funktionalität basierend auf einer Reihe von Feldern in meinem Index implementieren.

Meine aktuelle Konfiguration lautet wie folgt: Haystack | Pysolr | Solr

Für dieses Stück verwende ich PySolr und übertrage die Parameter an die Funktion more_like_this. Die Antwort findet das Dokument, aber keine verwandten Ergebnisse. Warum ist das so?

Hier ist die URL, die ich getroffen habe:

http://localhost:8080/solr/mlt?q=django_id:12123412&mlt.fl=industry_ids,loc_state,amount,sector_id&mlt.interestingTerms=details

Hier ist meine Antwort von Solr:

<response>
<object type="{XXXXXX-0F1D-4F28-AAA2-XXXXXXXXXXX}" cotype="cs" id="cosymantecbfw" style="width: 0px; height: 0px; display: block;"/>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">24</int>
</lst>
<result name="match" numFound="1" start="0">
    <doc>...</doc>
</result>
<result name="response" numFound="0" start="0"/>
<lst name="interestingTerms"/>
</response>

Solrconfig.xml

<!-- More Like This -->
<requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
</requestHandler>

Schema.xml

<field name="award_amount" type="sfloat" indexed="true" stored="true" multiValued="false" termVectors="true" />
<field name="estatus" type="slong" indexed="true" stored="true" multiValued="false" termVectors="true"/>
<field name="loc_state" type="string" indexed="true" stored="true" multiValued="false" termVectors="true"/>
<field name="orgtype_id" type="string" indexed="true" stored="true" multiValued="false" termVectors="true" />
<field name="sector_id" type="string" indexed="true" stored="true" multiValued="false" termVectors="true"/>
<field name="industry_ids" type="string" indexed="true" stored="true" multiValued="true" termVectors="true" />
<field name="award_amount_exact" type="sfloat" indexed="true" stored="true" multiValued="false" termVectors="true" />
<field name="sector_id_exact" type="string" indexed="true" stored="true" multiValued="false" termVectors="true"/>
<field name="amount_exact" type="sfloat" indexed="true" stored="true" multiValued="false" termVectors="true"/>

Jede Hilfe wäre geschätzt!

War es hilfreich?

Lösung

Ihre Textfelder müssen Typ haben text, was sie verarbeitet, um sie zu machen durchsuchbar. Das string Felder werden so aufbewahrt und befragt, wie sie sind, also Sie sind nicht durchsuchbar, um sie für MLT nutzlos zu machen.

Verweisen Felder kopieren Wenn Sie jemals die gleichen Daten wie beides speichern möchten text und string (zum Beispiel Faceting).


Ich sehe, Sie beabsichtigen auch, Zahlen zu finden, die unserer Anfrage am nächsten stehen. MLT ist dafür nicht richtig. Sie möchten a komponieren Funktionsabfrage dafür. Solr: eher so auf Zahlenfeldern

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top