以下搜索查询结果按搜索关键字大于一个的顺序提供数据。
{
"query": {
"query_string" : {
"query" : "(Sony Music) OR (Sony Music*) OR (*Sony Music) OR (*Sony Music*)",
"fields" : ["MDMGlobalData.Name1"]
}
}
}
但是,如果只是一个单词,请在查询数据中说sony
。订单搞砸了。
请让我看看为什么会这样?以及使用query-string
搜索获得上述有序结果的最佳方法是什么。
答案 0 :(得分:0)
仅查询sony
时,它应得分最低。那不是您所期望的吗?默认情况下,查询字符串似乎确实考虑了OR
子句的顺序,因此我想说您的查询字符串已经非常优化。
您是否尝试过修改default_operator
选项?
此外,sony
“位于查询数据中”是什么意思?查询字符串本身还是字段MDMGlobalData.Name1
为sony
的文档?
答案 1 :(得分:0)
但是,如果只是一个字,请在查询数据中说“ sony”。订单很乱 上。
根据您的上述陈述以及您在上述答案中提到的评论
使用示例文档和搜索查询添加工作示例
索引样本数据:
{
"MDMGlobalData":{
"name":"Sony Music"
}
}
{
"MDMGlobalData":{
"name":"Sony Music Corp"
}
}
{
"MDMGlobalData":{
"name":"All Sony Music Corp"
}
}
{
"MDMGlobalData":{
"name":"Sony"
}
}
搜索查询:
{
"query": {
"query_string": {
"query": "(Sony) OR (Sony*) OR (*Sony) OR (*Sony*)",
"fields": [
"MDMGlobalData.name"
]
}
}
}
搜索结果:
"hits": [
{
"_index": "foo1",
"_type": "_doc",
"_id": "4",
"_score": 3.1396344,
"_source": {
"MDMGlobalData": {
"name": "Sony"
}
}
},
{
"_index": "foo1",
"_type": "_doc",
"_id": "1",
"_score": 3.114749,
"_source": {
"MDMGlobalData": {
"name": "Sony Music"
}
}
},
{
"_index": "foo1",
"_type": "_doc",
"_id": "2",
"_score": 3.097392,
"_source": {
"MDMGlobalData": {
"name": "Sony Music Corp"
}
}
},
{
"_index": "foo1",
"_type": "_doc",
"_id": "3",
"_score": 3.084596,
"_source": {
"MDMGlobalData": {
"name": "All Sony Music Corp"
}
}
}
]
正如您所看到的,顺序仍然保持不变,Sony
的得分最高(应根据所查询的情况而定),然后根据得分的顺序进行进一步评分OR子句。