elasticsearch - 带有破折号(或其他符号)的弹性多重匹配字符串
问题描述
我正在尝试在我的弹性查询中匹配破折号(和其他符号)。
使用默认空白分析器对所有字段进行模糊搜索。
我的查询:
function_score: {
query: {
multi_match: {
query: string
analyzer: "whitespace",
fuzziness: 1
}
}
}
然而,这对破折号字符产生了意想不到的结果。前中央公园不适用于此。或者
只有当我使用短语匹配并去掉双引号时,破折号才能正常工作。但是没有模糊性。
有谁知道我怎样才能用破折号正常获得模糊搜索?
解决方案
添加具有索引映射、索引数据、搜索查询和搜索结果的工作示例
索引映射:
{
"mappings": {
"properties": {
"place": {
"type": "text",
"analyzer":"whitespace"
}
}
}
}
指数数据:
{
"place": "Cwntral-Park"
}
{
"place": "Central-Park"
}
{
"place": "Central-Area"
}
搜索查询:
{
"query": {
"bool": {
"should": {
"match": {
"place": {
"query": "Central-Park",
"fuzziness": 1
}
}
}
}
}
}
搜索结果:
"hits": [
{
"_index": "65605120",
"_type": "_doc",
"_id": "1",
"_score": 0.9808291,
"_source": {
"place": "Central-Park"
}
},
{
"_index": "65605120",
"_type": "_doc",
"_id": "3",
"_score": 0.8990934,
"_source": {
"place": "Cwntral-Park"
}
}
]
推荐阅读
- android - RemoteServiceException:无法在所有具有 oreo 和 pie 的 OnePlus 设备上提供广播
- excel - 如何修复我的代码中不允许我更新 excel 用户表单中其他列的错误?
- java - 在没有 STOMP 和 SockJs 的 Springboot 中测试 Websocket
- oracle12c - 使用 Jdeveloper 在 Oracle ADF 中制作动画图
- scala - 使用 Scala 使用 Json Play 在 S3 上解析 Json 文件
- .net - 为什么.net框架更改会导致mvc版本冲突
- javascript - 如何从 JSON 数组中获取特定数据?
- scala - Scala - 超时重试HTTP请求
- amazon-web-services - 执行 Jenkins 文件时,'scp' 未被识别为内部或外部命令
- android - 当我在点击布局问题上设置:isEnabled:false 时,Nativescript 按钮在点击时显示文本背景颜色