Solr / SolrNet - Использование подстановочных знаков для буквенного поиска - PullRequest
1 голос
/ 20 января 2011

Привет, ребята, я пытаюсь реализовать некоторые функции поиска, чтобы приложение писало.

Solr 1.4.1, работающий на Tomcat7 JDBC-соединение с MS SQLServer с View im indexing Solr завершил индексацию и индекс

Для поиска и связи с Solr я создал небольшой тестовый сервис WCF (который будет реализован с нашим основным сервисом позже).

Цель состоит в том, чтобы реализовать текстовое поле в нашем основномприложение.В этом текстовом поле пользователи могут начать печатать что-то вроде Paintbrush и постепенно фильтровать список объектов, поскольку вводится все больше и больше символов.

Это работает очень хорошо и прекрасно с Solr до определенной точки.Я использую подстановочный знак «звездочка» в конце моего запроса и поэтому выкидываю много запросов вроде p * pa * pain * paint *

и т. Д.на сервере и его выдачи результатов просто отлично (довольно впечатляюще быстро на самом деле).Единственная проблема заключается в том, что как только пользователь вводит целое слово, запрос становится кистью *, и в этот момент solr возвращает 0 результатов.

Таким образом, кажется, что запрос + подстановочный знак может быть только запросом + чем-то, а не запросом + ничем

Мне удалось заставить это работать в Lucene.Net, но Solr не делает все так, как кажется.

Какой совет вы мне можете дать по реализации такой функции?

там не так много кода, чтобы посмотреть, так как я использую SolrNet: http://pastebin.com/tXpe4YUe

Я думаю, что это как-то связано с Analyzer и Parser, но я еще не в Solr, чтобы знать, где искать:)

Ответы [ 2 ]

2 голосов
/ 20 января 2011

Я бы не реализовал предложения с префиксными запросами с подстановочными знаками в Solr.Есть другие механизмы, лучше подходящие для этого.См .:

0 голосов
/ 21 января 2011

Похоже, что причиной проблемы стала стемминг.Я исправил это, используя клон text_ws вместо текста для типа.Мои изменения в scema.xml: http://pastebin.com/xaJZDgY4

Стебминг отключен, а индексирование строчными буквами включено.Пока все запросы в нижнем регистре, они всегда должны давать результаты (если они вообще есть).

Кажется, проблема в том, что анализаторы не работают с подстановочными знаками, поэтому логика, которая сделала бы Джонни результатом Джони илиДжонни «сломан» при использовании подстановочных знаков.

Если у вас возникли схожие проблемы и мое решение здесь не работает, вы можете добавить debugQuery = on в строку запроса и посмотреть немного больше о том, что происходит.Это помогло мне сузить проблему.

...