【问题标题】:ElasticSearch first/last name matchElasticSearch 名字/姓氏匹配
【发布时间】:2013-11-19 02:02:08
【问题描述】:

我有两个字段:firstlast

我正在尝试使用multi_match 来模糊匹配全名:

"multi_match": {
    "query": name,
    "fields": [
        "first",
        "last",
    ],
    "fuzziness": 0.1
}

此搜索仅在搜索 100% 准确 first +' '+ last name 时匹配。这是不可取的。

使用 ElasticSearch 更有效的名字搜索技术是什么? (假设这两个字段必须分开)

例如输入 Dan Smi 应该匹配 Danny Smith

【问题讨论】:

  • 你试过“slop”参数吗?
  • 我相信 slop 仅用于匹配“Smith Danny”以及“Danny Smith”。我可能弄错了。

标签: elasticsearch fuzzy-search


【解决方案1】:

听起来您正在寻找Phonetic Analysis,它可用于创建代表原始令牌听起来的新令牌。

我使用您的示例数据 here 创建了一个可运行的示例,它显示了使用双变位过滤器匹配名字和姓氏字段的“Dan Smi”搜索。

语音分析插件的 github 页面包含您可能还想尝试的所有其他已实现语音标记过滤器的名称。

【讨论】:

    【解决方案2】:

    真的,重新阅读你的问题,更多的是关于分析,你可以用分析器/词干在线玩==>http://es.subitolabs.com/#/testr/20061741

    另外一件事,你有没有看过一个叫做“建议”的东西?相当新,但功能强大 ==> http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters.html

    在这种情况下,我的意思是 cross_field,您可能需要围绕 ES 做一些额外的工作,之前标记您的输入字符串(使用 ES 分析 API 获取标记片段),然后为每个标记运行建议程序,结束重新组装结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多