我完全理解模糊搜索,但在我的应用程序中,它们很慢,有很多术语(~500ms)。我遇到了一个缓慢模糊搜索的解决方案,其中建议不要进行模糊搜索,而是使用levenstein算法对术语进行索引,这样常规关键字搜索就会产生模糊结果。
有没有办法用Hibernate Search做这个,最好是使用注释?
答案 0 :(得分:0)
我不太清楚你想在这做什么。您是否希望在索引编制期间将具有给定Levenstein距离的单词插入索引?与同义词搜索类似,您可以将同义词标记插入到索引中吗?如果是这样,您可以编写on token过滤器(和过滤器工厂),然后使用 @AnalyzerDef 框架构建自定义分析器。查看源代码以了解如何完成此操作。 请注意,我看到这种方法有几个问题。索引变得昂贵,索引大小将变得非常大。当然,我对你的用例了解不多。
答案 1 :(得分:0)
我会按顺序尝试以下选项:
如果上述情况不适用,并且您确实需要进行模糊搜索,并且没有其他选择,您可以尝试使用夜间构建的lucene's trunk。这使用了完全不同的算法,因此这些查询要快得多[1]。但是,我认为你不能轻易地将未发布的lucene trunk与hibernate集成在一起。
[1]:http://blog.mikemccandless.com/2011/03/lucenes-fuzzyquery-is-100-times-faster.html关于模糊改进的博客。