Частота слова в 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