下午好, 我正在尝试在模糊搜索中使用一个名为“ 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
],