在Hibernate Search中,如何添加对完全匹配,startsWith和endsWith匹配的支持?
例如,用于索引值
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,并覆盖crementToken()等吗?如果是这样,如何告诉Hibernate Search在索引编制过程中仅使用MyCustomTokenFilter而不在查询过程中使用(因此我可以决定何时使用 START 和 END 令牌)?