2016-09-14 2 views
1

Я в процессе перемещения приложения из dtSearch в elasticsearch и хотел сохранить те же функции без изменения процесса конечного пользователя. Главный, с которым я столкнулся, - это следствие. Мы позволяем пользователю определять свои собственные правила, вытекающие в формате DTSearch:Elasingearch custom stemming algorithm

3+ies -> y 
3+ing -> 

Где 3 это число предшествующих символов, то ies является суффиксом и y является то, что заменить его. Можно ли указать собственный алгоритм для elasticsearch (ну ... lucene engine), чтобы пользователь не обновлял свои правила стебля, чтобы соответствовать новой службе поиска? Или оба метода взаимоисключающие?

ответ

0

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

https://www.elastic.co/guide/en/elasticsearch/reference/2.4/analysis-pattern_replace-tokenfilter.html


В противном случае, вы должны создать свой собственный Elasticsearch анализа плагин (с реализацией маркера фильтром, который делает то, что вы хотите, в Java).

https://www.elastic.co/guide/en/elasticsearch/plugins/2.4/plugin-authors.html

Это будет работать лучше, если вы можете выразить свои правила, вытекающие как DFA в памяти. Существует несколько библиотек java Automata, которые вы можете использовать. (например, http://www.brics.dk/automaton/faq.html)