Как можно запросить Solr для адреса gmail, игнорируя точки и плюсы? - PullRequest
0 голосов
/ 27 августа 2018

Я бы хотел запросить в базе данных Solr текст, содержащий заданный адрес Gmail. Я хочу выполнить поиск по каноническому адресу Gmail и получить любые результаты, которые Gmail интерпретирует как один и тот же адрес.

* ** 1003 тысяча два * Пример

Поиск somebody@gmail.com должен соответствовать всем следующим строкам:

  • somebody@gmail.com
  • some.body@gmail.com
  • somebody+somewhere@gmail.com

но не совпадают:

  • somebody.else@gmail.com
  • some+body@gmail.com

Возможно ли это с помощью регулярного выражения или каким-либо другим способом?


Примечание. Информацию о gmail "точка не имеет значения" и расширениях со знаком плюс можно найти по адресу https://gmail.googleblog.com/2008/03/2-hidden-ways-to-get-more-from-your.html

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Если вы знаете, что какой-то тип поиска будет требоваться, вы будете использовать его во время индексации для повышения эффективности.

Итак, вы хотите извлечь эти адреса электронной почты и поместить их в отдельное поле для предварительной обработки (удаление точки и удаление + что угодно). Затем вы выполняете поиск в обоих полях, возможно, увеличивая по электронной почте.

Возможно, вам будет проще с помощью UAX29URLEmailTokenizerFactory и TypeTokenFilterFactory (в виде белого списка по типу электронной почты) сохранить только адреса электронной почты в скопированном поле.

0 голосов
/ 28 августа 2018
  • С регулярным выражением: скорее всего, это возможно, я не так часто использую регулярное выражение, но я думаю, что это так.
  • Но в любом случае я советую вам поработать над индексом, чтобы сделать это проще. Вы просто индексируете два поля, одно с оригинальным содержимым (на всякий случай), а другое с copyField. и + кое-что убрано. Тогда у вас будет больше инструментов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...