【问题标题】:elasticsearch wildcard query with ascii folding带有 ascii 折叠的 elasticsearch 通配符查询
【发布时间】:2012-11-28 01:50:29
【问题描述】:

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

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

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

任何帮助将不胜感激。

谢谢, 莫辛

【问题讨论】:

  • 如果您需要一些帮助,您应该在您的问题中添加一些细节。您的映射,哪些有效,哪些无效。

标签: java lucene elasticsearch


【解决方案1】:

尝试使用field 查询并将analyze_wildcard 设置为true。

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

【讨论】:

    【解决方案2】:

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

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

    您还可以发现this document 很有用。

    【讨论】:

      猜你喜欢
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2017-11-30
      • 2015-06-26
      • 1970-01-01
      相关资源
      最近更新 更多