elasticsearch - 使用Elasticsearch的整数的语音搜索结果

标签 elasticsearch elasticsearch-plugin phonetics

原谅我,因为我是Elasticsearch的新手,但我正在遵循此处找到的语音入门指南:Phonetic Matching

我有以下

POST /app
{
    "settings": {
        "index": {
            "analysis": {
                "filter": {
                    "dbl_metaphone": {
                        "type": "phonetic",
                        "encoder": "double_metaphone"
                    }
                },
                "analyzer": {
                    "dbl_metaphone": {
                        "tokenizer": "standard",
                        "filter": "dbl_metaphone"
                    }
                }
            }
        }
    },
    "mappings": {
        "movie": {
            "properties": {
                "title": {
                    "type": "string",
                    "fields": {
                        "phonetic": {
                            "type": "string",
                            "analyzer": "dbl_metaphone"
                        }
                    }
                },
                "year": {
                    "type": "string",
                    "fields": {
                        "phonetic": {
                            "type": "string",
                            "analyzer": "dbl_metaphone"
                        }
                    }
                }
            }
        }
    } }

我通过执行以下操作添加了一些结果:
POST /app/movie
{ "title": "300", "year": 2006"} & { "title":"500 days of summer", "year": "2009" }

我想通过输入以下查询来查询电影“300”:
POST /app/movie/_search
    {
        "query": {
            "match": {
                "title.phonetic": {
                    "query": "three hundred"
                }
            }
        }
    }

但我没有结果。如果将我的查询更改为“300”,尽管它工作正常。

如果我做:
GET /app/_analyze?analyzer=dbl_metaphone&text=300
{
  "tokens": [
    {
      "token": "300",
      "start_offset": 0,
      "end_offset": 3,
      "type": "<NUM>",
      "position": 0
    }
  ]
}

我看到只有一个数字 token 返回,而不是字母数字版本,例如:
GET /app/_analyze?analyzer=dbl_metaphone&text=three hundred
{
  "tokens": [
    {
      "token": "0R",
      "start_offset": 0,
      "end_offset": 5,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "TR",
      "start_offset": 0,
      "end_offset": 5,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "HNTR",
      "start_offset": 6,
      "end_offset": 13,
      "type": "<ALPHANUM>",
      "position": 1
    }
  ]
}

我应该定义为同时获取数字和字母数字标记的语音查询中缺少某些内容吗?

最佳答案

这是不可能的。 Double Metaphone是一种语音编码算法。
简而言之,它尝试将发音相似的单词编码为相同的键。

这有助于搜索诸如名称之类的术语,这些术语的拼写可能不同,但听起来却一样。

从算法中可以看到double metaphone忽略数字/数字字符。
您可以阅读有关双元音电话here的更多信息。

关于elasticsearch - 使用Elasticsearch的整数的语音搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34275900/

相关文章:

ruby - 映射ElasticSearch GeoPoint字段

elasticsearch - geoip查找失败弹性堆栈logstash

unicode - 比较不同语言的短字符串以获得相似的声音 - Soundex 是答案吗?

apache-spark - Spark 无法检测 ES 版本 - 如果网络/Elasticsearch 集群不可访问,通常会发生这种情况

elasticsearch - ElasticSearch数组数据与AND条件匹配嵌套元素中的多个属性

elasticsearch - Kibana插件资源

ruby-on-rails - 创建索引时的 Elasticsearch 错误可能是由于模块 Kuromoji 未正确安装

elasticsearch - 如何基于过滤器数据在 Elasticsearch 中对数据进行排序

.net - 如何使用.net比较两个音轨的波形?

IOS - nsstring 文本转换为英文音标文本