带有Asciifolding的搜索中的模糊

时间:2018-11-06 17:57:41

标签: elasticsearch fuzzy-search

下午好, 我正在尝试在模糊搜索中使用一个名为“ test_fuzzy”的“自定义分析器”,但是当我在“ asciifolding”过滤器中将“ preserve_original”选项插入“ true”时,此方法不起作用。

当我创建“ custom_analyzer”并将“ preserve_original”设置为false时,搜索将正确返回结果。

我在弹性文档中看到,每个术语(分析后)都会应用模糊性,即使使用“ preserve_original”设置为true的人(即使有更多令牌(更多选项),也没有人知道弹性原因无法找到我的文档) ?

以下是preserve_original处于活动状态时(test_fuzzy):

{
  "tokens": [
    {
      "token": "produto",
      "start_offset": 0,
      "end_offset": 7,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "varzacao",
      "start_offset": 8,
      "end_offset": 16,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "varzação",
      "start_offset": 8,
      "end_offset": 16,
      "type": "<ALPHANUM>",
      "position": 1
    }
  ]
}

以下是禁用preserve_original(test_fuzzy)时的情况:

{
  "tokens": [
    {
      "token": "produto",
      "start_offset": 0,
      "end_offset": 7,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "varzacao",
      "start_offset": 8,
      "end_offset": 16,
      "type": "<ALPHANUM>",
      "position": 1
    }
  ]
}

这是执行的查询:

[
                'match' => [
                    'name.fuzzy' => [
                        'query' => 'produto varzação',
                        'operator' => 'and',
                        'boost' => 2,
                        'zero_terms_query' => 'all',
                        'fuzziness' => 'auto'                        ]
                ]
            ]

遵循映射:

'name' =>
                    [
                        'type' => 'text',
                        'analyzer' => 'standard',
                        'fields' => [
                            'norm' => [
                                'type' => 'keyword',
                                'normalizer' => 'keyword_text'
                            ],
                            'stemmed' => [
                                'type' => 'text',
                                'analyzer' => 'stemmed'
                            ],
                            'fuzzy' => [
                                'type' => 'text',
                                'analyzer' => 'test_fuzzy'
                            ]
                        ],
                    ],

遵循解析器和过滤器:

'test_fuzzy' => [
        'tokenizer' => 'standard',
        'filter' => [
            'lowercase',
            'custom_asciifolding',
        ]
 ],
 'filter' => [
        'custom_asciifolding' => [
            'type' => 'asciifolding',
            'preserve_original' => true
        ],

0 个答案:

没有答案