Pregunta

Actualmente estoy buscando implementar más como esta funcionalidad basada en A en varios campos en mi índice.

Mi configuración actual es la siguiente: Haystack | Pysolr | Solria

Para esta pieza, estoy usando Pysolr y pasando los parámetros a la función más_like_ esta. La respuesta encuentra el documento pero no cualquier resultado relacionado. ¿Porqué es eso?

Aquí está la URL que golpeé:

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

Aquí está mi respuesta 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>

esquema.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"/>

¡Cualquier ayuda sería apreciada!

¿Fue útil?

Solución

Sus campos de texto deben tener tipo text, que los procesa para hacerlos de búsqueda. los string Los campos se almacenan y consultan como son, así que no se pueden buscar, haciéndolos inútil para MLT.

Referirse Copiar campos Si alguna vez desea almacenar los mismos datos que ambos text y string (Por ejemplo, facetación).


Veo que también tienes la intención de encontrar números más cercanos a nuestra consulta. MLT no es correcto para eso. Quieres componer un consulta de funciones para eso. Solr: más así en los campos numéricos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top