В Lucene, используя Стандартный анализатор, я хочу сделать поля с пробелами и специальными символами доступными для поиска - PullRequest
0 голосов
/ 29 марта 2010

В Lucene, используя Стандартный анализатор, я хочу сделать поля с пробелами и специальными символами (подчеркивание,!, @, #, ....) доступными для поиска.

Я установил IndexField на NOT_ANALYZED_NO_NORMS и Field.Store.YES

Когда я смотрю на свой индекс в LUKE, поля, как я и ожидал, имеют такие значения, как:

«Номер SKU», но когда я ищу «SKU» или «SKU *», ничего не появляется.

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 31 марта 2010

Поиск 'SKU' не будет работать, потому что вы проиндексировали NOT_ANALYZED; «Номер SKU» - это весь проиндексированный термин. Если вы хотите, чтобы слова были разбиты по пробелам, для этого предназначен ANALYZED.

Теперь поиск по префиксу, 'SKU *', будет работать, за исключением того, что по умолчанию расширенные термины lucene QueryParser прописные. Установите lowercaseExpandedTerms в анализаторе на False.

0 голосов
/ 30 марта 2010

Field.Store.YES не влияет на поведение поиска в этом поле.И я бы установил IndexField просто NOT_ANALYZED.

Попробуйте выполнить поиск в Luke по полному тексту «Номер SKU», используя анализатор KeywordAnalyzer.

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