FullTextField Hibernate Lucene分析器没有返回预期的结果



我试图实现全文搜索:当输入搜索文本将是"樱桃"它应该返回"樱桃1"、"樱桃"、"樱桃5"、"樱桃101"、"樱桃果"。但它只匹配"樱桃1","樱桃","樱桃5"。不是樱桃101",樱桃果"

我的项目是在Java spring boot with Mysql和我使用Hibernate与lucene后端版本6.1.7.Final.

<dependency>
<groupId>org.hibernate.search</groupId>
<artifactId>hibernate-search-mapper-orm</artifactId>
<version>6.1.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.search</groupId>
<artifactId>hibernate-search-backend-lucene</artifactId>
<version>6.1.7.Final</version>
</dependency>

我遵循文档,但它的工作方式不一样,它被描述:https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#getting-started-analysis

我添加了以下代码:

package org.hibernate.search.documentation.analysis;
import org.hibernate.search.backend.lucene.analysis.LuceneAnalysisConfigurationContext;
import org.hibernate.search.backend.lucene.analysis.LuceneAnalysisConfigurer;
public class MyLuceneAnalysisConfigurer implements LuceneAnalysisConfigurer {
@Override
public void configure(LuceneAnalysisConfigurationContext context) {
context.analyzer( "english" ).custom() 
.tokenizer( "standard" ) 
.tokenFilter( "lowercase" ) 
.tokenFilter( "snowballPorter" ) 
.param( "language", "English" ) 
.tokenFilter( "asciiFolding" );
context.analyzer( "name" ).custom() 
.tokenizer( "standard" )
.tokenFilter( "lowercase" )
.tokenFilter( "asciiFolding" );
}
}

在应用程序中添加属性。属性文件

spring.jpa.properties.hibernate.search.backend.analysis.configurer=class:org.hibernate.search.documentation.analysis.MyLuceneAnalysisConfigurer

并添加以下

@FullTextField(analyzer = "name") 
private String name;

我确实认为您的配置工作如预期。Cherryfruit和cherry101不是有效的英语单词。这就是为什么你不能在你的索引中找到它们。

你可以用这个配置来验证我的声明吗?

最新更新