4

我正在使用通配符查询搜索名称,它工作正常,但是当我们搜索 ascii 字符时,它不像用户搜索“Hélè*”时那样工作得很好,它无法搜索。

请注意,我已经创建了在名称字段上执行 ascii 折叠和小写的分析器。

当我们在 query_string 中进行搜索时,它也可以正常工作。这是否意味着通配符不分析 ascii 折叠和查询字符串呢?如果是,那么有没有办法用 ascii 实现通配符?

任何帮助将不胜感激。

谢谢,莫辛

4

2 回答 2

5

尝试使用设置为的field查询。analyze_wildcardtrue

默认情况下,elasticsearch 不会尝试分析通配符查询中的文本,它只会对某些查询进行小写。因此,您的查询正在搜索所有以开头的术语,hélè并且由于 ascii 折叠过滤器,索引中没有此类术语。

于 2012-12-10T16:29:56.580 回答
0

在 Solr 中有一个ReversedWildcardFilterFactory,它在索引时使用。如果查询包含通配符,则使用它时,不会将其转换为 ascii,否则将使用 ascii 进行转换和搜索。您可以在 ASCIIFoldingFilterFactory 之后定义它。

我不知道 Lucene 中存在类似的东西,但您可以通过查看其源代码来编写您的 FilterFactory 。

您还可以发现此文档很有用。

于 2012-12-10T16:27:39.967 回答