当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch:补全提示器不能与空白分析器一起工作

饶谦
2023-03-14

因此,对于我的完成暗示前缀:“ela”,我希望输出为“Hello elastic Search”。

我知道一个简单的解决方案是添加多字段输入,如下所示:

"suggest": {
         "input": ["Hello","elastic","search"]
 }

但是,如果这是解决方案,那么使用分析器有什么意义呢?分析器在完成暗示中有意义吗?

我的映射:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "completion_analyzer": {
          "type": "custom",
          "filter": [
            "lowercase"
          ],
          "tokenizer": "whitespace"
        }
      }
    }
  },
  "mappings": {
            "my-type": {
                "properties": {
                    "mytext": {
                        "type": "text",
                        "fields": {
                            "keyword": {
                                "type": "keyword",
                                "ignore_above": 256
                            }
                        }
                    },
                    "suggest": {
                        "type": "completion",
                        "analyzer": "completion_analyzer",
                        "search_analyzer": "completion_analyzer",
                        "max_input_length": 50
                    }
                }
            }
        }
}

我的文档:

{
    "_index": "my-index",
    "_type": "my-type",
    "_id": "KTWJBGEBQk_Zl_sQdo9N",
    "_score": 1,
    "_source": {
        "mytext": "dummy text",
        "suggest": {
                 "input": "Hello elastic search."
        }
    }
}

搜索请求:

{
    "suggest": {
        "test-suggest" : {
        "prefix" :"ela", 
        "completion" : { 
            "field" : "suggest",
            "skip_duplicates": true
        }
        }
    }
}

提前谢了。

吉米

共有1个答案

潘嘉佑
2023-03-14

完成建议程序不能执行全文查询,这意味着它不能基于多字段中间的字返回建议。

来自ElasticSearch本身:

原因是FST查询与全文查询不同。我们在一个短语中找不到单词。相反,我们必须从图的左边开始,然后向右边移动。

 类似资料:
  • 问题内容: 如何创建将标记空白字符串并将其更改为小写以进行索引的映射? 这是我当前的映射,它通过空格标记化,因为我无法理解如何将其小写并搜索(查询)相同的… 请帮忙… 问题答案: 我设法写了一个自定义分析器,这有效…

  • 问题内容: 我的目标是搜索单词,而不考虑添加到其中的分析器。 我将 匹配 查询与 关键字分析器一起使用, 但我认为它可以与添加到该属性的默认分析器一起使用。 在elasticsearch中,我的作者文档结构像 索引映射: 在这里,我注意到我的标题分析器过滤器之一是 ngram 但是我在匹配查询中使用了 关键字分析器 ,以避免搜索过程中自动完成。 但是当我搜索时,上面的文件是匹配的。我期望的是组织具

  • 问题内容: 编辑:要补充一点,同义词似乎可以与基本的查询字符串查询一起使用。 这将返回新罕布什尔州的所有结果,但对“ nh”的“匹配”查询将不返回结果。 我正在尝试将同义词添加到我的Elastic索引中的位置字段中,这样,如果我对“质量”,“马”或“马萨诸塞州”进行位置搜索,则每次都会得到相同的结果。我将同义词过滤器添加到设置中,并更改了位置映射。这是我的设置: 以及location.region

  • V3.4页面设计器空白问题(4933有问题) 解决方案: 方案一:更新版本, 下载地址(新的4935解决了这个问题) 方案二: 不更新版本,执行以下操作: 把studio\plugins下的org.eclipse.osgi_3.8.2.v20130124-134944.jar和org.eclipse.equinox.registry_3.5.200.v20120522-1841.jar拷贝到too

  • 因为之前微软推出了typescript语言,结合tsd文件,用visual studio写typescript代码是相当爽的,智能提示的功能非常nb。 这个功能理所应当也被vsc继承了。 vsc的自动补全用的是typings。 The TypeScript Definition Manager(之前的tsd已经弃用了,faq里有说明) https://github.com/typings/typi

  • 我开发了一个android应用程序,它有firebase电话号码认证。输入电话号码后,firbase通过短信发送验证OTP号码。所以我在我的应用程序中添加并允许SMS读取权限 现在根据Google Play策略,我们需要删除SMS读取权限,并实现SMS检索器API。