elasticsearch - 如何生成多词搜索建议

标签 elasticsearch match-phrase

我正在使用Elasticsearch来构建一个小型搜索应用程序,并试图找出如何使用多字(词组)建议来构建自动完成功能。我正在运作...有点...

我主要收到一个单词的建议,但是当我按下空格键时,它就会取消这些建议。

例如,如果我键入“fast”,则工作正常,如果我键入“fast”,则将停止显示建议。

我正在使用Edge N Gramsmatch_phrase_prefix并按照示例herehere进行构建。对于_all中的match_phrase_prefix字段,仅使用include_in_all:false可以取消除标题和内容之外的所有字段。我开始认为是因为我正在对一个小的数据集进行测试,并且根本没有足够的标记化术语来产生多词建议。请查看下面的相关代码,并告诉我我要去哪里了,如果有的话?

"analysis": {
"filter": {
 "autocomplete_filter": {
  "type": "edge_ngram",
  "min_gram": "1",
  "max_gram": "20",
  "token_chars": [
    "letter",
    "digit"
  ]
 }
},
"analyzer": {
  "autocomplete": {
    "type": "custom",
    "tokenizer": "whitespace",
    "filter": [
       "lowercase",
       "asciifolding",
       "autocomplete_filter"
    ]     
  },
  "whitespace_analyzer": {
    "type": "custom",
    "tokenizer": "whitespace",
    "filter": [
      "lowercase",
      "asciifolding"
      ]

最佳答案

尝试keyword tokenizer

"autocomplete": {
    "type": "custom",
           "filter": [
       "lowercase",
       "asciifolding",
       "autocomplete_filter"
    ],
 "tokenizer": "keyword"     
  }

以供引用
elasticsearch mapping tokenizer keyword to avoid splitting tokens and enable use of wildcard

由于默认情况下,其标准分析仪可在空间上拆分
您可以检查您的 token ,例如curl 'localhost:9200/test/_analyze?pretty=1&analyzer=my_edge_ngram_analyzer' -d 'FC Schalke 04'引用https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.html

关于elasticsearch - 如何生成多词搜索建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36958863/

相关文章:

elasticsearch - 如何增强短语匹配但仅在某些领域?

ElasticSearch:替代使用 match_phrase 来支持模糊性

elasticsearch - elasticsearch match_phrase查询精确的子字符串搜索

php - ElasticSearch PHP API : Waiting did not resolve future

python - 从数组中提取值的最快方法?

lucene - 什么对Elastic Search上的查询排序产生影响?

java - 仅获取聚合会导致Elasticsearch

elasticsearch - Elasticsearch-RestHighLevelClient与弹性云的连接