我正在使用Sping Boot 和ElasticSearch,我试图使用三个字符的搜索,但搜索只匹配五个字符或更多。
如果我的用户名为“Bob Smith”,则搜索“Smith”可以找到匹配项,但搜索“Bob”找不到匹配项。
我怀疑这是我的类“SearchMappingConfig implements HibernateOrmSearchMappingConfigurer”中需要更改的内容,但我找不到任何有关更改成功匹配结果所需的标记大小的信息。
我的“@ Entity”表在要包括在令牌搜索中的字段上具有“@ FullTextField(analyzer =“英语”)“注解。
如何更改搜索匹配的长度?
理想情况下,我希望任意三个字母形成匹配,因此搜索“罗恩”将匹配“罗纳德”和“Laronda”
ElasticSearch7.14 Spring Boot 2.7.6
我一直在阅读Sping Boot 和ElasticSearch文档,但找不到任何有关更改匹配长度的信息。
1条答案
按热度按时间ghg1uchk1#
Hibernate能够使用ElasticSearch或Lucene客户端。我们现有的项目使用Lucene,如果要替换它,那将是一项巨大的事业。
推荐的解决方案是创建新的分析器,以便传入数据创建更小的令牌,我不想更改现有数据库上的分析器。
我能找到的很多文档都指向使用Elasticsearch查询构建器或使用通配符的Hibernate 5方法。
我测试了我们的Elasticsearch,发现通配符解决方案可以工作。
我最终使用Hibernate 6方法进行通配符搜索,效果很好。