我有以下 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/