Solr More Like This (MLT) не дает результатов - PullRequest
2 голосов
/ 16 февраля 2012

В настоящее время я хочу реализовать больше подобных функций, основываясь на количестве полей в моем индексе.

Моя текущая конфигурация выглядит следующим образом: Стог сена | PySolr | Solr

Для этой части я использую PySolr и передаю параметры в функцию more_like_this. Ответ находит документ, но никаких связанных результатов. Почему это так?

Вот URL, который я нажал:

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

Вот мой ответ от 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"/>

Буду признателен за любую помощь!

1 Ответ

7 голосов
/ 16 февраля 2012

Ваши текстовые поля должны иметь тип text, который обрабатывает их, чтобы сделать их доступными для поиска . Поля string хранятся и запрашиваются как есть, поэтому они не доступны для поиска , что делает их бесполезными для MLT.

См. скопировать поля , если вы когда-нибудь захотите сохранить те же данные, что и text и string (например, фасетирование).


Я вижу, вы также намереваетесь найти числа, наиболее близкие к нашему запросу. MLT не подходит для этого. Вы хотите составить запрос функции для этого. SolR: больше похоже на числовые поля

...