2014-12-29 3 views
0

Я нахожу, что акронимы в названиях компаний бывают разных форматов, например.Elasticsearch/Lucene Акроним Поиск

AB Industries A.B. Industries A B Industries

Эти имена могут быть в моих индексированных данных в любом из этих форматов, и может прийти в поисковом запросе в любом из этих форматов тоже.

Есть ли комбинация фильтров и токенизаторов, которые могут включать поиск любого из перечисленных форматов для поиска индексированного документа в любом из перечисленных форматов?

ответ

0

Если вы используете StandardAnalyzer, ваши данные будут разделены символом '.' и A и B будут индексироваться как отдельные термины.

Я хотел бы предложить поэкспериментировать с вариантами ниже

1) Реализовать свой собственный анализатор, удалить StandardFilter и использовать ClassicTokenizer с LowerCaseFilter. (согласно стандарту ClassicTokenizer doc - «Разделяет слова с символами пунктуации, удаляя знаки пунктуации, но точка, за которой не следует пробел, считается частью токена»

2) Если выше работает, то «AB» будет индексироваться как «AB», таким образом, запрос «AB» не найдет соответствия. Чтобы исправить это полностью, вы должны иметь свой токенизатор, где вы можете нормализовать токены A.B-> AB, A B-> AB и т. Д. Перед индексацией.

Вы можете получить массу примеров пользовательских токенизаторов и анализаторов в Google.

Позвольте мне знать статус эксперимента.