То, когда я использую Luke для поиска моего индекса Lucene с помощью стандартного анализатора, я вижу поле, которое я ищу, содержит значения формы MY_VALUE. Когда я ищу поле: "MY_VALUE" однако, запрос анализируется как поле: "мое значение"
Существует ли простой способ выйти из подчеркивания (_) символ так, чтобы это искало его?
Править:
01.04.2010 11:08 PST
Я думаю, что существует ошибка в токенизаторе для Lucene 2.9.1, и это было, вероятно, там прежде. Загрузите Luke и попытайтесь искать "BB_HHH_FFFF5_SSSS", когда существует число, следующие маркеры возвращаются:
"bb hhh_ffff5_ssss"
После некоторого тестирования я нашел, что это из-за числа. Если я ввел
"BB_HHH_FFFF_SSSS", я добираюсь
"bb hhh ffff ssss"
На данном этапе я склоняюсь к ошибке токенизатора, если присутствие числа, как не предполагается, имеет это поведение, но мне не удается видеть почему.
Кто-либо может подтвердить это?
Не похоже, что вы использовали StandardAnalyzer для индексации этого поля. В Luke вам нужно будет выбрать анализатор, который вы использовали для индексации этого поля, чтобы правильно сопоставить MY_VALUE.
Кстати, вы можете сопоставить MY_VALUE с помощью KeywordAnalyzer.
Я не думаю, что вы сможете использовать стандартный анализатор для этого варианта использования.
Судя по тому, что я думаю о ваших требованиях, анализатор ключевых слов должен работать нормально с небольшими усилиями (все поле становится одним термином).
Я думаю, что некоторая путаница возникает, когда смотришь на поле вместе с Люком. Сохраненное значение - , а не , что используется в запросах, вам нужны термины. Я подозреваю, что если вы посмотрите на термины, хранящиеся в вашем поле, они будут «моим» и «значением».
Надеюсь, это поможет,