Частота слова в Solr

Я пытаюсь получить частоту слов с помощью Solr. Когда я даю этот запрос:

localSolr/solr/select?q=someQuery&rows=0&facet=true&facet.field=content&wt=xml

Solr дает мне такие частоты, как;

<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="content">
<int name="word1">24</int>
<int name="word2">12</int>
<int name="word3">8</int>

Но когда я считаю слова; Я считаю, что фактическое количество слов в word2 равно 13. Solr считает в поле те же слова, что и один.

Например;

текст поля состоит; word2 word5 word7 word9 word2, Solr не возвращает счетчик word2 номер 2, а возвращает 1. Возвращает 1 для счетчика word2 для обоих предложений ниже;

word2 word10 word11 word12
word2 word9 word7 word2 word23

Так что частоты возвращаются неправильно. Я проверил поля фасетов, но не нашел подходящего параметра для этого. Как я могу исправить это так, чтобы он считал те же слова в предложении?

edit: соответствующая часть schema.xml:

<fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
    <field name="content" type="text_tr" stored="true" indexed="true" multiValued="true"/>
    <copyField source="content" dest="text"/>
    <field name="text" type="text_tr" stored="false" indexed="true" multiValued="true"/>

2 ответа

Решение

Если поле, на которое вы фасетируете, многозначно, то каждое слово в фасете получает правильный счет

я забыл упомянуть одну вещь: Term Vector Component доставит вас туда, куда вам нужно

в запросе tv.tf выдаст вам частоту для каждого термина, а tv.fl скажет solr, по каким полям следует вычислять частоту.

NB это делает ваше время индексации медленнее, чем сейчас (иначе: вы должны попробовать это)

Используйте обработчик запросов luke

http://localhost:8983/solr/admin/luke?fl=YOUR_TEXT_FIELD&numTerms=500

больше информации: http://wiki.apache.org/solr/LukeRequestHandler

Другие вопросы по тегам