java - hibernate 搜索不区分大小写的搜索不能正确地与 LowerCaseFilterFactory 配合使用

标签 java lucene full-text-search hibernate-search

我有以下 hibernate-search 配置:

@AnalyzerDef(name = "autocompleteNGramAnalyzer",

// Split input into tokens according to tokenizer
        tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),

        filters = {
                // Normalize token text to lowercase, as the user is unlikely to
                // care about casing when searching for matches
                @TokenFilterDef(factory = WordDelimiterFilterFactory.class,
                        params = @Parameter(name = "catenateAll", value = "1")),
                @TokenFilterDef(factory = LowerCaseFilterFactory.class),
                @TokenFilterDef(factory = EdgeNGramFilterFactory.class, params = {
                        @Parameter(name = "minGramSize", value = "2"),
                        @Parameter(name = "maxGramSize", value = "5")})})

这种行为真的很奇怪。

我有一个值为George Cain

的字段

如果我按 Ge 搜索 - 它会返回值
如果我通过 GeO 搜索 - 它会返回值
如果我通过 GeOR 搜索 - 它不会返回任何内容
如果我通过 GeoR 搜索 - 它返回值
如果我通过 GEOR 搜索 - 它返回值

GeOR 有什么不好? 我怎样才能解决这个问题?

这个框架可以调试吗?

最佳答案

首先,尝试使用 Luke 来查看您的 Lucene 索引中已索引的内容:https://github.com/DmitryKey/luke/releases 。您将能够看到 token ,这可能有助于您了解正在发生的情况。

确保您的分析器在您的字段上正确定义,并且分析器也应用于您的查询(向我们展示您如何定义字段以及如何执行查询可能是个好主意)。

如果您最终认为这是一个错误,您可以使用我们的 https://github.com/hibernate/hibernate-test-case-templates/tree/master/search/hibernate-search-lucene为我们提供一个独立的测试用例,以便我们查看。

关于java - hibernate 搜索不区分大小写的搜索不能正确地与 LowerCaseFilterFactory 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305598/

相关文章:

sql - 如何使用 sqlite fts3 执行全文搜索

java - 如何从 jackson 的自定义反序列化器中调用默认反序列化器

java - 随机数生成和生成数的排除

java - 在多个 pdf 文件中搜索一个词并根据字数为 pdf 编制索引

.net - Lucene.NET - 索引单个大于 1GB 的大文件

java - 文本搜索引擎中 SOLR 与 DB 和应用程序的关系

.net - 有哪些免费或廉价的工具可以搜索/索引文件系统(使用 .Net)?

java - 无法使用Java在Windows cmd上显示unicode字符

java - 如何在集群模式下的spark commit中找到当前的暂存目录?

php - 我可以在子查询中使用全文mysql查询吗