Неверные результаты SOLR

У меня проблемы с использованием SOLR для поиска. Моя схема определяется следующим образом:

    <field name="_root_" type="string" indexed="true" stored="false"/>
    <field name="_text_" type="text_general" multiValued="true" indexed="true" stored="true"/>
    <field name="_version_" type="long" indexed="true" stored="true"/>
    <field name="deleted" type="booleans" indexed="true" stored="true"/>
    <field name="description" type="strings" indexed="true" stored="true"/>
    <field name="favorites_count" type="tlongs"/>
    <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
    <field name="image" type="strings"/>
    <field name="ingredients" type="strings" multiValued="true" indexed="true" stored="true"/>
    <field name="level" type="tlongs"/>
    <field name="portions" type="tlongs" indexed="true" required="true" stored="true"/>
    <field name="preparation" type="strings"/>
    <field name="rating" type="tdoubles"/>
    <field name="ratings_count" type="tlongs"/>
    <field name="subject" type="strings" indexed="true" required="true" stored="true"/>
    <field name="visible" type="booleans" indexed="true" stored="true"/>

Проблема в том, что я пытаюсь выполнить поиск в поле «ингредиенты».

Основной запрос:

q=(subject:"фразовый поисковый ввод" ИЛИ description:"фразовый поисковый ввод") И ингредиенты:("некоторые ингредиенты фразы")

или ингредиенты: searchWord

Запрос без параметра ингредиентов работает нормально, с правильными результатами.

Однако, когда дело доходит до фильтрации ингредиентов, независимо от того, использую ли я fq или напрямую в строке запроса, я получаю неверные результаты или вообще не получаю результатов.

Поле ингредиентов имеет следующие данные:

ингредиенты:[ингредиент 1, ингредиент 2, ингредиент 3 фраза]

Другая проблема заключается в том, что когда ингредиент имеет символы "(" или ")", и я ищу такую ​​фразу - не может найти соответствие.

Версия SOLR: 5.3

Кто-нибудь может помочь мне в этом?

Спасибо!


person user1169107    schedule 11.12.2015    source источник


Ответы (1)


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

  1. Используйте Solr Admin Analyzer, чтобы увидеть, как данные сохраняются в поле ингредиентов и как они получают запросы.
  2. Убедитесь, что вы правильно загружаете данные в поле ингредиентов. Убедитесь, что каждое отправляемое вами значение действительно хранится как отдельный токен.
  3. Имейте в виду, что вы не токенизируете поле. Это может повлиять на поиск.
  4. Добавьте в запрос параметр "debug=true"; вы узнаете, как Solr «видит» запрос
person nick_v1    schedule 11.12.2015