elasticsearch - Elasticsearch - 将符号视为常规字符串并使文本不区分大小写
问题描述
我有一个像这样的弹性查询:
return {
url: API,
data: {
query: {
bool: {
must: [{
function_score: {
query: {
multi_match: {
query: "1234-ASDasdfasdf",
// analyzer: "whitespace",
type: "best_fields",
fuzziness: "1",
}
}
}
}
// filters are pushed into here
]
}
}
}
}
我们的业务数据涉及破折号,我发现空白分析器最适合转义破折号并将它们视为常规字符串。
但是,空格分析器会混淆不区分大小写的搜索。
我还没有找到允许不区分大小写并忽略符号的解决方案。使用默认分析器,我认为所有符号都被视为标记器。所以输入类似 1-2-3-4 的内容实际上会搜索 [1,2,3,4]。
是否有不区分大小写并在空格上标记的解决方案(或至少不标记符号)?
解决方案
你在正确的轨道上。
如果空格标记器对您有用,但问题不区分大小写,那么您可以添加lowercase token filter
curl -X PUT "localhost:9200/lowercase_example?pretty" -H 'Content-Type: application/json' -d'
{
"settings": {
"analysis": {
"analyzer": {
"whitespace_lowercase": {
"tokenizer": "whitespace",
"filter": [ "lowercase" ]
}
}
}
}
}
'
由于您需要更改数据的映射,请不要忘记重新索引数据。
推荐阅读
- .net - IMediatR - 通用请求的通用请求处理程序
- html - 当 Angular 中的输入发生变化时更新组件
- javascript - 背景图像的两个事件
- postgresql - PostgreSQL:查找 total_films_rented 的百分比
- php - 防止 html 表单字段发布
- file - 检查 CSV 中的列的最佳方法
- node.js - index.html 中的脚本会干扰 Http 重定向
- qt-creator - QTCreator 可以搜索特定的警告或错误并显示所有实例吗?
- c - 如何在 Visual Studio 代码中使用 C++ 中的安装库?
- string - 仅替换freemarker中字符串中单词的最后一个实例