我想结合标准文本搜索使用标签搜索。
以下是我希望能够进行的查询:
“皮裤#vintage #london”
所以实际上我想剥离#hashtaged元素并按名称搜索它们,累积意义上。首先,我希望它通过搜索字符串优先匹配完全匹配,然后是具有接近匹配+主题标签的匹配,然后最后通过哈希标记与搜索字符串匹配。
因此,Vintage和London的物品将高于Vintage或London的物品。
这是我的映射
{
"title" : {
"type" : "string",
"analyzer" : "standard"
},
"hashtags" : {
"properties" : {
"id" : "integer",
"name" : "string"
}
}
}
所以我想要的查询是
"exact or near match string" + "optional cumulative array match (preferably with fuzzyness)"
或与我的映射相关
"near or exact match on 'title'" + "cumulative array match with fizzyness on hashtag.name"
我尝试过一次模糊匹配,但在清晰度不够的情况下得到了太多的结果。我尝试了一个简单的simple_query_string,但它返回了奇怪的结果,并尝试了一个bool匹配,但在添加数组时什么都没有回来。
任何人都可以提供的任何帮助都将非常感激。如果您需要更多信息或其他什么,请告诉我?非常感谢您花时间阅读本文。
答案 0 :(得分:0)
也许是" dis_max"查询可以为你工作。它可以生成多个不同的查询并连接结果。因此,她首先询问" hashtags =' vintage london'"然后" hashtags =' vintage'"然后" hashtags ='伦敦'"。您还可以在研究数据中添加通配符(*
),例如" hashtags ='伦敦*
'"
{
"fields" : ["hashtags", "title"],
"query" : {
"dis_max" : {
"tie_breaker" : 0,
"queries" : [ {
"wildcard" : {
"hashtags" : "vintage london"
}
}, {
"wildcard" : {
"hashtags" : "vintage"
}
}, {
"wildcard" : {
"hashtags" : "london"
}
}
]
}
},
"sort" : {
"_score" : "desc"
} }