elasticsearch Elasticsearch:edgeNGram令牌过滤器对非英语令牌有效吗?,elasticsearch,lucene,cjk,elasticsearch,Lucene,Cjk" /> elasticsearch Elasticsearch:edgeNGram令牌过滤器对非英语令牌有效吗?,elasticsearch,lucene,cjk,elasticsearch,Lucene,Cjk" />

elasticsearch Elasticsearch:edgeNGram令牌过滤器对非英语令牌有效吗?

elasticsearch Elasticsearch:edgeNGram令牌过滤器对非英语令牌有效吗?,elasticsearch,lucene,cjk,elasticsearch,Lucene,Cjk,我正在尝试为索引设置新映射。它将支持部分关键字搜索和由ES支持的自动完成请求 带空格标记器的edgeNGram标记过滤器似乎是一个不错的选择。到目前为止,我的设置如下所示: curl -XPUT 'localhost:9200/test_ngram_2?pretty' -H 'Content-Type: application/json' -d'{ "settings": { "index": { "analysis": { "analyzer":

我正在尝试为索引设置新映射。它将支持部分关键字搜索和由ES支持的自动完成请求

带空格标记器的edgeNGram标记过滤器似乎是一个不错的选择。到目前为止,我的设置如下所示:

curl -XPUT 'localhost:9200/test_ngram_2?pretty' -H 'Content-Type: application/json' -d'{
"settings": {
    "index": {
        "analysis": {
            "analyzer": {
                "customNgram": {
                    "type": "custom",
                    "tokenizer": "whitespace",
                    "filter": ["lowercase", "customNgram"]
                }
            },
            "filter": {
                "customNgram": {
                    "type": "edgeNGram",
                    "min_gram": "3",
                    "max_gram": "18",
                    "side": "front"
                }
            }
        }
    }
}
}'
问题是日语单词!NGrams对日语字母有效吗? 例如: 【11月13日13時まで、フォロー&RTで応募!】


此文档中没有空格-无法使用部分关键字搜索文档,这是预期的吗?

您可能需要查看icu\u标记器,它增加了对外语的支持

根据UAX#29中的定义,将文本标记为单词边界上的单词: Unicode文本分割。它的行为非常类似于标准 标记器,但通过使用 基于词典的泰语、老挝语、汉语单词识别方法, 日文、韩文和使用自定义规则破坏缅甸和 高棉语文本转换成音节

把你的样品放进去

{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_icu_analyzer": {
            "tokenizer": "icu_tokenizer"
          }
        }
      }
    }
  }
}
请注意,要在索引中使用它,您需要安装适当的插件:

bin/elasticsearch插件安装分析icu

将此添加到代码中:

curl -XPUT 'localhost:9200/test_ngram_2?pretty' -H 'Content-Type: application/json' -d'{
"settings": {
    "index": {
        "analysis": {
            "analyzer": {
                "customNgram": {
                    "type": "custom",
                    "tokenizer": "icu_tokenizer",
                    "filter": ["lowercase", "customNgram"]
                }
            },
            "filter": {
                "customNgram": {
                    "type": "edgeNGram",
                    "min_gram": "3",
                    "max_gram": "18",
                    "side": "front"
                }
            }
        }
    }
}
}'

通常,您会使用
标准
分析器搜索这样的自动完成,而不是使用
icu标记器
将分析器添加到映射中(但不使用
edengram
过滤器)并在搜索时将其应用于您的查询,或显式地将其设置为您应用于
customNgram
的字段的
search\u analyzer

谢谢,我会对此进行研究。但我想仍然需要使ngram用于自动完成用例。我已经更新了我的答案,以说明如何将其应用于您的代码