Запрос адресов электронной почты, проиндексированных lucene - PullRequest
1 голос
/ 18 ноября 2010

Если я пытаюсь получить dave@gmail.com, поиск «dave» будет работать так же, как и «dave@gmail.com».

Но поиск "dave @ gmail" не сработает.Запрос происходит внутри сервлета Java.Я полагаю, что проблема может заключаться в полной остановке разделения

Как я могу это исправить, чтобы "dave @ gmail" возвращал "dave@gmail.com"?Адреса электронной почты также могут содержать другие домены (например, .co.uk)

спасибо

Ответы [ 4 ]

3 голосов
/ 18 ноября 2010

Lucene использует «Анализаторы» для токенизации и индексации ваших документов. Аналогично, анализаторы используются для токенизации поискового запроса пользователя.

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

Стандартный токенизер Lucene распознает строки электронной почты и индексирует их как один токен.

Он будет индексировать dave@gmail.com как [token: dave@gmail.com]. Однако возможно, что анализатор, который вы используете для токенизации вашего запроса (или если вы создаете запрос вручную), разбивает его на 3 токена, разделяя их на не алфавитно-цифровые символы. Поэтому вы можете искать 3 смежных токена: [tok1: dave] [tok2: gmail] [tok3: com], которых не существует.

Query.toString , вероятно, "красиво напечатает" запрос, который вы отправляете в Lucene, что может помочь вам в отладке.

1 голос
/ 13 декабря 2017

вы можете использовать Fuzzy в качестве анализатора в Query Search.это приблизит результат, заданный пользователем, определит расстояние Левенштейна (LD).

1 голос
/ 01 апреля 2013

Использование

org.apache.lucene.analysis.standard.UAX29URLEmailTokenizer

или

org.apache.lucene.analysis.KeywordTokenizer

токенайзер для поиска по адресу электронной почты

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

В принятом ответе об использовании Lucene для поиска адресов электронной почты показано, как создать собственный токенизатор и анализатор адресов электронной почты. Создание собственного дает вам точный контроль над тем, как вы хотите хранить и получать адреса электронной почты в Lucene.

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