基本上,我想删除所有空格并将整个字符串标记为单个标记。(稍后我将在其上使用nGram。)
这是我的索引设置:
"settings": { "index": { "analysis": { "filter": { "whitespace_remove": { "type": "pattern_replace", "pattern": " ", "replacement": "" } }, "analyzer": { "meliuz_analyzer": { "filter": [ "lowercase", "whitespace_remove" ], "type": "custom", "tokenizer": "standard" } } } }
"pattern": " "我尝试使用"pattern": "\\u0020"和来代替\\s。
"pattern": " "
"pattern": "\\u0020"
\\s
但是,当我分析文本“ beleza na web”时,它仍然创建三个单独的标记:“ beleza”,“ na”和“ web”,而不是一个“ belezanaweb”。
分析器首先对字符串进行标记处理,然后应用一系列标记过滤器来分析字符串。您已将tokenizer指定为标准,这意味着已使用标准的tokenizer对输入进行了令牌化,后者分别创建了token。然后将模式替换过滤器应用于令牌。
使用关键字标记器代替标准标记器。其余的映射就可以了。您可以如下更改映射
"settings": { "index": { "analysis": { "filter": { "whitespace_remove": { "type": "pattern_replace", "pattern": " ", "replacement": "" } }, "analyzer": { "meliuz_analyzer": { "filter": [ "lowercase", "whitespace_remove", "nGram" ], "type": "custom", "tokenizer": "keyword" } } } }