基本上我想删除所有空格并将整个字符串标记为单个标记。 (稍后我将使用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
。
但是当我分析文本“beleza na web”时,它仍会创建三个单独的标记:“beleza”,“na”和“web”,而不是一个单独的“belezanaweb”。
答案 0 :(得分:13)
分析器首先通过对其进行标记来分析字符串,然后应用一系列标记过滤器。您已将tokenizer指定为标准,表示已使用standard tokenizer对输入进行了标记,该keyword tokenizer分别创建了令牌。然后将图案替换过滤器应用于标记。
使用https://codereview.stackexchange.com/questions/69123/ibdesignable-uicheckbox代替您的标准分词器。其余的映射很好。 您可以按以下方式更改映射
"settings": {
"index": {
"analysis": {
"filter": {
"whitespace_remove": {
"type": "pattern_replace",
"pattern": " ",
"replacement": ""
}
},
"analyzer": {
"meliuz_analyzer": {
"filter": [
"lowercase",
"whitespace_remove",
"nGram"
],
"type": "custom",
"tokenizer": "keyword"
}
}
}
}