SOLR - PathHierarchyTokenizerFactory Фасетный запрос - PullRequest
3 голосов
/ 03 августа 2011

Я пытался выполнить запрос к полю, которое настроено как solr.PathHierarchyTokenizerFactory, но запрос просто возвращает все записи.Кажется, что выполнение фасетного запроса просто не работает.У кого-нибудь есть способ сделать это?Я использую PathHierarchy для реализации фасетов категории / подкатегории.

<fieldType name="text_path" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
    </analyzer>
</fieldType>

<field name="libraries" type="text_path" indexed="true" stored="true" multiValued="true" />

И

http://linux2:8984/solr/select?q=*:*&rows=0&fq=libraries:"/test/subtest"&facet=true&facet.field=libraries&f.libraries.facet.sort=true&f.libraries.facet.limit=-1&f.libraries.facet.mincount=-1

Спасибо

Ответы [ 2 ]

8 голосов
/ 03 февраля 2012

Измените определение поля text_path, чтобы применять PathHierarchyTokenizerFactory только во время индексации (пример ниже).Ваша проблема в том, что ваши запросы обрабатываются токенизатором, так что fq = library: "/ test / subtest" фактически запрашивает fq = библиотеки: (/ test / subtest ИЛИ /test).

<fieldType name="text_path" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
    </analyzer>
</fieldType>

Обратите внимание на тип анализатора = "Индекс"

0 голосов
/ 09 декабря 2011

Что произойдет, если вы удалите параметры огранки? Он также возвращает все документы?

По моему мнению, огранка не должна влиять на результаты поиска. Мне кажется, что запрос фильтра, который вы передали в параметре fq, по какой-то причине не работает.

...