Запрос Solr возвращает частичные совпадения для одного поля, а не другого поля - PullRequest
1 голос
/ 09 июля 2011

У меня есть автозаполнение поиска на моем сайте, и я использую Solr для поиска подходящих документов. Я пытаюсь получить частичные совпадения в заголовках страниц, поэтому, например, Java * будет соответствовать Java, Javascript и т. Д. На данный момент автозаполнение настроено, чтобы дать мне частичные совпадения по всему тексту на странице, что дает некоторые странные результаты, поэтому я решил переключиться на использование заголовка страницы. Однако, когда я пытаюсь переключить поисковый термин с text для текста страницы на title, запрос внезапно больше не принимает частичные совпадения. Вот пример моего исходного запроса:

q=text:java^2+text:"java"
  &hl=true&hl.snippets=1&hl.fragsize=25&hl.fl=title&start=0&rows=3

К сожалению, парень, который настроил это для меня, больше не работает со мной, поэтому я понятия не имею, что происходит «под капотом». Я использую Spring / J2EE для своего бэкэнда, если это что-то меняет.

Ответы [ 2 ]

2 голосов
/ 09 июля 2011

Вы должны убедиться, что поле не является полем на основе строк.Вы можете посмотреть это, если взгляните на schema.xml.Если вы выполняете поиск с помощью Java* внутри строкового поля, оно будет соответствовать только заголовкам, которые начинаются с Java*.

Другое дело, что вам нужно убедиться, что вы знаете, что подстановочные запросы чувствительны к регистру ( смотри это ).

0 голосов
/ 10 июля 2011

Зависит от того, как был проанализирован заголовок поля, посмотрите schema.xml, чтобы увидеть, какой тип поля и как его анализируют для создания термина. Простой способ сделать это состоит в том, чтобы перейти к solr admin http://localhost:8983/solr/admin/analysis.jsp,, выбрать ту же опцию имени, ввести имя поля (я предполагаю «заголовок»), добавить образец текста и запрос, чтобы увидеть, какие термины созданы и соответствуют .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...