Solr / Solrnet - Использование подстановочных знаков для получения букв по поиску письма
-
13-10-2019 - |
Вопрос
Эй, ребята, я пытаюсь реализовать некоторые функции поиска в приложении.
SOLR 1.4.1 работает на подключении Tomcat7 JDBC с MS SQLServer с представлением IM INDEXING SOLR завершил индексацию, и индекс работает.
Чтобы найти и общаться с Solr, я создал небольшую тестовую службу WCF (будет реализован с нашей основной службой позже).
Цель состоит в том, чтобы реализовать текстовое поле в нашем основном приложении. В этом текстовом поле пользователи могут начать печатать что -то вроде кисти и постепенно фильтровать список объектов, поскольку все больше и больше символов вводятся.
Это работает просто отлично и Dandy с Solr до определенного момента. Я использую звездочку подстановочного знака в конце моего запроса, и поэтому я бросаю много запросов, таких как P* pa* Pain* Paint*
и т.д. на сервере и его возвращающихся результатах просто отлично (на самом деле довольно впечатляюще быстро). Единственная проблема заключается в том, что, как только пользователь вводит все слово, запрос - это кисточка*, после чего Solr возвращает 0 результатов.
Таким образом, кажется, что запрос+подстановочный знак может быть только запросом+что -то, а не запрос+ничего
Мне удалось получить эту работу под Lucene.net, но Solr не делает что -то так же, как кажется.
Любой совет, который вы можете дать мне по реализации такой функции?
Кода не так много для просмотра, так как я использую Solrnet: http://pastebin.com/txpe4yue
Я полагаю, что это как -то связано с анализатором и анализатором, но я еще не так, чтобы знать, где смотреть :)
Решение 2
Стоимость, кажется, что вызвало проблему. Я исправил его, используя клон text_ws вместо текста для типа. Мои изменения в scema.xml: http://pastebin.com/xajzdgy4
Stemming отключена, а индексация строчной строки включена. Пока все запросы находятся в более низком случае, они всегда должны давать результаты (если они вообще).
Похоже, что проблема заключается в том, что анализаторы не работают с подстановочными знаками, поэтому логика, которая сделает Джонни результатом Джона или Джонни, «сломана» при использовании подстановочных знаков.
Если вы сталкиваются с похожими проблемами и мое решение здесь не совсем работает, вы можете добавить DebugQuery = в свою строку запроса и немного больше о том, что происходит. Это помогло мне сузить проблему.
Другие советы
Я бы не стал внедрять предложения с запросами подстановочного знака префикса в Solr. Есть и другие механизмы, лучше подходящие для этого. Видеть: