gpt4 book ai didi

java - 使用忽略 UTF-8 字符的 Hibernate Search 进行搜索

转载 作者:行者123 更新时间:2023-11-29 06:54:23 24 4
gpt4 key购买 nike

我刚刚实现了基于 Hibernate Search 的全文搜索引擎。

我正在寻找一个问题的解决方案。我有包含波兰语 (UTF-8) 字符的文本,例如:“zażółć gęślą jaźń”。当我搜索“jaźń”时,一切正常,结果已找到。但是当我搜索“jazn”时,找不到结果。

我想搜索所有可能的术语:“jaźń”、“jazń”、“jaźn”和“jazn”,然后找到搜索到的“zażółć gęślą jaźń”文本。我如何配置 Hibernate Search 来执行此操作?

最佳答案

在索引/查询之前,您必须定义一个分析器来分析您的文本。

请参阅 Hibernate 搜索文档 section 1.8 , 关于分析仪,以及有关分析的更完整信息, section 4.3

要解决您的问题,您定义的分析器必须包含 ASCIIFoldingFilter,它将非 ASCII 字符转换为最接近的 ASCII 等效字符(可能还有 LowerCaseFilter)。 See this example

如果您使用 Hibernate Search DSL 来构建查询,它会自动完成。如果您使用普通 Lucene 构建查询,那么您有 an example here ,它将分析器自动绑定(bind)到字段。

请注意,默认情况下不分析通配符查询,因此如果您使用通配符,则需要在将其传递给查询之前清理字符串。

您可以查看如何清理通配符查询的示例 here .

它在下面使用 ASCIIFoldingFilter 和 this sort of code .

关于java - 使用忽略 UTF-8 字符的 Hibernate Search 进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com