Как в Hibernate Search добавить поддержку полного, начинается с и заканчивается с совпадением?
Например, для индексации значений
doc 1: bridge
doc 2: bridge rusting
doc 3: strong bridge
Я хочу вернуть запросы:
query: ^bridge$
result: doc 1
query: ^bridge
result: docs 1 & 2
query: bridge$
result: docs 1 & 3
Решение кажется простым: переопределить индексатор Lucene, поэтому поля индексируются с некоторыми дополнительными токенами:
doc 1: _BEGIN_ bridge _END_
doc 2: _BEGIN_ bridge rusting _END_
doc 3: _BEGIN_ strong bridge _END_
так что:
query: _BEGIN_ bridge _END_
returns: docs 1
query: _BEGIN_ bridge
returns: docs 1 and 2
query: bridge _END_
returns: docs 1 and 3
Концептуально это должно работать. Но как реализовать?
Должен ли я создать собственный фильтр токенов MyCustomTokenFilter, переопределить incrementToken () и т. Д.? Если да, то как сказать Hibernate Search, чтобы ТОЛЬКО использовать MyCustomTokenFilter во время индексации, а НЕ во время запросов (чтобы я мог решить, когда использовать токены START и END )?