Индекс Solr кажется действительным, но не возвращает результатов

Solr новичок здесь.

Я создал индекс Solr и записал в него целую кучу документов. На странице администратора Solr я вижу, что документы существуют, и схема тоже в порядке. Но когда я выполняю поиск с использованием тестового ключевого слова, я не получаю никаких результатов.

  1. При входе * : *

    в запрос (на странице администратора Solr) я получаю все результаты.

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

Так что я в замешательстве, что я делаю неправильно.


person Mikos    schedule 16.08.2010    source источник
comment
Поле заголовка индексировано, строковое и сохранено, так же, как и описание (это мое поле поиска по умолчанию).   -  person Mikos    schedule 16.08.2010
comment
Кстати, я использую Lucid Imagination Solr/Tomcat, который запускается через приложение установки.   -  person Mikos    schedule 16.08.2010
comment
Переключитесь на тип поля text. Смотрите мой обновленный ответ.   -  person Mauricio Scheffer    schedule 16.08.2010
comment
Ага! Спасибо! позвольте мне попробовать это ...   -  person Mikos    schedule 16.08.2010


Ответы (5)


Вероятно, у вас неправильно настроен <defaultSearchField>. См. этот вопрос.

Другая возможность: ваше поле имеет тип string вместо text. Строковые поля, в отличие от текстовых, не анализируются, а сохраняются и индексируются дословно.

person Mauricio Scheffer    schedule 16.08.2010
comment
Спасибо, Маурисио. У меня есть настройка поля по умолчанию. Я также пробовал специфичные для поля запросы, например. Название: Узоры. Но 0 результатов вызывает недоумение. - person Mikos; 16.08.2010
comment
Вот оно! Преобразование в типизированное текстовое поле помогло. Глупый я, ну ты узнаешь что-то новое каждый день. Спасибо, Маурисио. - person Mikos; 17.08.2010
comment
У меня была такая же проблема, исправил тип поля текста вместо строки. Спасибо! - person seanhodges; 27.04.2011
comment
Есть ли другие возможности? Я сделал оба из них, но все еще не могу получить результат! - person JavaTechnical; 25.10.2014

У меня была такая же проблема с новой настройкой Solr 8. Принятый ответ больше недействителен, поскольку конфигурация <defaultSearchField> будет устарела< /а>.

Поскольку я не нашел ответа на вопрос, почему Solr не возвращает результаты из каких-либо полей, несмотря на то, что он проиндексирован, я обратился к документации запроса. Я нашел парсер запросов DisMax:

Анализатор запросов DisMax предназначен для обработки простых фраз (без сложного синтаксиса), вводимых пользователями, и для поиска отдельных терминов в нескольких полях с использованием различных весовых коэффициентов (повышений) в зависимости от значимости каждого поля. Дополнительные параметры позволяют пользователям влиять на оценку на основе правил, специфичных для каждого варианта использования (независимо от пользовательского ввода).

Напротив, синтаксический анализатор Lucene по умолчанию говорит только о поиске одного поля. Так что я попробовал DisMax, и он сработал очень хорошо!

Пример запроса:

http://localhost:8983/solr/techproducts/select?defType=dismax&q=video

Вы также можете указать, в каких именно полях искать, чтобы предотвратить нежелательные побочные эффекты. Несколько полей разделены пробелами, которые переводятся как + в URL-адресах:

http://localhost:8983/solr/techproducts/select?defType=dismax&q=video&qf=features+text

И последнее, но не менее важное: присвойте полям вес:

http://localhost:8983/solr/techproducts/select?defType=dismax&q=video&qf=features^20.0+text^0.3

Если вы используете pysolr, как я, вы можете добавить эти параметры в свой поисковый запрос следующим образом:

results = solr.search('search term', **{
    'defType': 'dismax',
    'qf': 'features text'
})
person Kevin Woblick    schedule 29.05.2020

В моем случае проблема заключалась в формате запроса. Похоже, моя настройка по умолчанию искала и точное совпадение со всем значением поля. Итак, чтобы получить результаты, если я искал sit, мне нужно было запросить *sit*, т.е. использовать подстановочные знаки для получения ожидаемого результата.

person Kahitarich    schedule 09.02.2021

С solr 4 мне пришлось решить это в соответствии с ответом Маурисио, определив type="text_en" в поле.

person hhuttunen    schedule 25.06.2013

С Solr 6 используйте text_general.

person RRaj    schedule 18.04.2016