Solr More Like This (MLT) ne retournent pas les résultats
-
25-10-2019 - |
Question
Je cherche actuellement à mettre en œuvre cette fonctionnalité plus comme basée sur un sur un certain nombre de champs dans mon index.
Ma configuration actuelle est la suivante: Haystack | PySolr | Solr
Pour cette pièce, je suis en utilisant PySolr et passer les paramètres à la fonction more_like_this. La réponse trouve le document, mais aucun résultat connexes. Pourquoi?
Voici l'URL je frappe:
http://localhost:8080/solr/mlt?q=django_id:12123412&mlt.fl=industry_ids,loc_state,amount,sector_id&mlt.interestingTerms=details
Voici ma réponse de 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"/>
Toute aide serait appréciée!
La solution
Vos champs de texte doit être de type text
, qui les processus pour les rendre interrogeable . Les champs string
sont stockés et interrogés comme ils sont, si ils ne sont pas interrogeables , ce qui les rend inutiles pour MLT.
Référencez copier les champs si jamais vous voulez stocker les mêmes données que les deux text
et string
(par exemple, facettage).
Je vois que vous souhaitez également trouver des numéros les plus proches de notre requête. MLT ne convient pas à cela. Vous voulez composer une requête Fonction pour cela. SolR: Plus comme ceci sur les champs numériques