首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于查询和文档标记的elasticsearch无法获得适当的结果

基于查询和文档标记的elasticsearch无法获得适当的结果
EN

Stack Overflow用户
提问于 2019-01-19 14:46:07
回答 1查看 143关注 0票数 3

我正在尝试实现一个搜索系统,在其中我需要使用Edge NGRAM Tokenizer。创建索引的设置如下所示。我在文档和搜索查询中都使用了相同的标记程序。(文件使用佩里桑语)

代码语言:javascript
复制
PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "autocomplete": {
          "tokenizer": "autocomplete",
          "filter": [
            "lowercase"
          ]
        },
        "autocomplete_search": {
          "tokenizer": "autocomplete"
        }
      },
      "tokenizer": {
        "autocomplete": {
          "type": "edge-ngram",
          "min_gram": 2,
          "max_gram": 10,
          "token_chars": [
            "letter"
          ]
        }
      }
    }
  },
  "mappings": {
    "_doc": {
      "properties": {
        "title": {
          "type": "text",
          "analyzer": "autocomplete",
          "search_analyzer": "autocomplete_search"
        }
      }
    }
  }
}

当我在文档中搜索术语“آلمانی”时,当我有一个带有数据的文档:‘آلمانخوباست’.时,当我得到0次点击(结果)时,问题就出现了。

如您所见,分析术语'آلمانی‘的结果显示,它生成令牌'آلمان’并正常工作。

代码语言:javascript
复制
{
  "tokens" : [
    {
      "token" : "آ",
      "start_offset" : 0,
      "end_offset" : 6,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "آل",
      "start_offset" : 0,
      "end_offset" : 6,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "آلم",
      "start_offset" : 0,
      "end_offset" : 6,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "آلما",
      "start_offset" : 0,
      "end_offset" : 6,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "آلمان",
      "start_offset" : 0,
      "end_offset" : 6,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "آلمانی",
      "start_offset" : 0,
      "end_offset" : 6,
      "type" : "<ALPHANUM>",
      "position" : 0
    }
  ]
}

下面显示的搜索查询有0次点击。

代码语言:javascript
复制
GET /test/_search
{
  "query": {"match": {
    "title": {"query": "آلمانی" , "operator": "and"}
  }}
}

然而,搜索术语'آلما‘返回带数据’آلمانخوباست‘的文档。我怎样才能解决这个问题?

您的协助将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-20 08:53:48

我发现里卡多·海克( Ricardo )的DevTicks帖子解决了我的问题。输入链接以获得更详细的说明。

我更改了映射设置如下:

代码语言:javascript
复制
    "mappings": {
    "_doc": {
      "properties": {
        "title": {
          "type": "text",
          "analyzer": "autocomplete",
          "search_analyzer": "autocomplete_search",
          "fields": {
            "ngram": {
              "type": "text",
              "analyzer": "autocomplete"
            }
          }
        }
      }
    }
  }

现在我通过搜索“آلمانخوباست”这个词得到了"آلمانی“博士。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54268240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档