elasticsearch Elasticsearch 5.5:姓名搜索需要帮助(职位得分更高)
我试着做一个自动补全,谁给了打字单词位置更高的分数。按分数排序,然后按名称排序 我的目标:
elasticsearch Elasticsearch 5.5:姓名搜索需要帮助(职位得分更高),
elasticsearch,
elasticsearch,我试着做一个自动补全,谁给了打字单词位置更高的分数。按分数排序,然后按名称排序 我的目标: { "persons_index": { "settings": { "index": { "number_of_shards": "5", "provided_name": "persons_index", "creation_date": "149988180
{
"persons_index": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "persons_index",
"creation_date": "1499881803116",
"analysis": {
"filter": {
"ascii_folding_preserve_original": {
"type": "asciifolding",
"preserve_original": "true"
},
"names_synonym_filter": {
"type": "synonym",
"synonyms": [
"aage,åge",
"gaard,gård"
]
}
},
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase",
"trim",
"names_synonym_filter",
"ascii_folding_preserve_original"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "LxMHLha-R02i__S7gDWBtA",
"version": {
"created": "5050099"
}
}
}
}
}
{
"persons_index": {
"mappings": {
"persons_type": {
"properties": {
"fieldDisplayFullName": {
"type": "text",
"norms": false,
"analyzer": "my_analyzer"
},
"fieldSort": {
"type": "text",
"norms": false,
"analyzer": "keyword",
"fielddata": true
}
}
}
}
}
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
"explain": false,
"size" : 50,
"sort": [
"_score",
{
"fieldSort": {
"order": "asc"
}
}
],
"query": {
"bool" : {
"must" : {
"bool" : {
"minimum_should_match":"2",
"should" : [
{"match" : { "fieldDisplayFullName" : "peter" }},
{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
]
}
},
"should" : [
{"span_first" : {
"match" : {
"span_term" : { "fieldDisplayFullName" : "peter" }
},
"end" : 1,
"boost" : 50.0
}},
{"span_first" : {
"match" : {
"span_multi":{
"match":{
"wildcard" : { "fieldDisplayFullName" : "chr*" }
}
}
},
"end" : 2,
"boost" : 50.0
}}
]
}
}
}
键入“宠物”
结果:
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
anders petersen
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
键入“peter chr”
结果:
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
anders petersen
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
上面成功了,我很高兴,但后来发生了一些奇怪的事情,当有重复的“彼得·克里斯滕森”。现在,结果如下所示:
peter christian grau
peter christian reumert krogsgaard
peter christensen
peter christensen
peter bruun christensen
我想要这个:
peter christensen
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
请帮忙
设置:
{
"persons_index": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "persons_index",
"creation_date": "1499881803116",
"analysis": {
"filter": {
"ascii_folding_preserve_original": {
"type": "asciifolding",
"preserve_original": "true"
},
"names_synonym_filter": {
"type": "synonym",
"synonyms": [
"aage,åge",
"gaard,gård"
]
}
},
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase",
"trim",
"names_synonym_filter",
"ascii_folding_preserve_original"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "LxMHLha-R02i__S7gDWBtA",
"version": {
"created": "5050099"
}
}
}
}
}
{
"persons_index": {
"mappings": {
"persons_type": {
"properties": {
"fieldDisplayFullName": {
"type": "text",
"norms": false,
"analyzer": "my_analyzer"
},
"fieldSort": {
"type": "text",
"norms": false,
"analyzer": "keyword",
"fielddata": true
}
}
}
}
}
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
"explain": false,
"size" : 50,
"sort": [
"_score",
{
"fieldSort": {
"order": "asc"
}
}
],
"query": {
"bool" : {
"must" : {
"bool" : {
"minimum_should_match":"2",
"should" : [
{"match" : { "fieldDisplayFullName" : "peter" }},
{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
]
}
},
"should" : [
{"span_first" : {
"match" : {
"span_term" : { "fieldDisplayFullName" : "peter" }
},
"end" : 1,
"boost" : 50.0
}},
{"span_first" : {
"match" : {
"span_multi":{
"match":{
"wildcard" : { "fieldDisplayFullName" : "chr*" }
}
}
},
"end" : 2,
"boost" : 50.0
}}
]
}
}
}
映射:
{
"persons_index": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "persons_index",
"creation_date": "1499881803116",
"analysis": {
"filter": {
"ascii_folding_preserve_original": {
"type": "asciifolding",
"preserve_original": "true"
},
"names_synonym_filter": {
"type": "synonym",
"synonyms": [
"aage,åge",
"gaard,gård"
]
}
},
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase",
"trim",
"names_synonym_filter",
"ascii_folding_preserve_original"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "LxMHLha-R02i__S7gDWBtA",
"version": {
"created": "5050099"
}
}
}
}
}
{
"persons_index": {
"mappings": {
"persons_type": {
"properties": {
"fieldDisplayFullName": {
"type": "text",
"norms": false,
"analyzer": "my_analyzer"
},
"fieldSort": {
"type": "text",
"norms": false,
"analyzer": "keyword",
"fielddata": true
}
}
}
}
}
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
"explain": false,
"size" : 50,
"sort": [
"_score",
{
"fieldSort": {
"order": "asc"
}
}
],
"query": {
"bool" : {
"must" : {
"bool" : {
"minimum_should_match":"2",
"should" : [
{"match" : { "fieldDisplayFullName" : "peter" }},
{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
]
}
},
"should" : [
{"span_first" : {
"match" : {
"span_term" : { "fieldDisplayFullName" : "peter" }
},
"end" : 1,
"boost" : 50.0
}},
{"span_first" : {
"match" : {
"span_multi":{
"match":{
"wildcard" : { "fieldDisplayFullName" : "chr*" }
}
}
},
"end" : 2,
"boost" : 50.0
}}
]
}
}
}
示例文档
{"fieldSort" : "peter christensen", "fieldDisplayFullName" : "Peter Christensen"}
查询:
{
"persons_index": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "persons_index",
"creation_date": "1499881803116",
"analysis": {
"filter": {
"ascii_folding_preserve_original": {
"type": "asciifolding",
"preserve_original": "true"
},
"names_synonym_filter": {
"type": "synonym",
"synonyms": [
"aage,åge",
"gaard,gård"
]
}
},
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase",
"trim",
"names_synonym_filter",
"ascii_folding_preserve_original"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "LxMHLha-R02i__S7gDWBtA",
"version": {
"created": "5050099"
}
}
}
}
}
{
"persons_index": {
"mappings": {
"persons_type": {
"properties": {
"fieldDisplayFullName": {
"type": "text",
"norms": false,
"analyzer": "my_analyzer"
},
"fieldSort": {
"type": "text",
"norms": false,
"analyzer": "keyword",
"fielddata": true
}
}
}
}
}
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
"explain": false,
"size" : 50,
"sort": [
"_score",
{
"fieldSort": {
"order": "asc"
}
}
],
"query": {
"bool" : {
"must" : {
"bool" : {
"minimum_should_match":"2",
"should" : [
{"match" : { "fieldDisplayFullName" : "peter" }},
{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
]
}
},
"should" : [
{"span_first" : {
"match" : {
"span_term" : { "fieldDisplayFullName" : "peter" }
},
"end" : 1,
"boost" : 50.0
}},
{"span_first" : {
"match" : {
"span_multi":{
"match":{
"wildcard" : { "fieldDisplayFullName" : "chr*" }
}
}
},
"end" : 2,
"boost" : 50.0
}}
]
}
}
}
_搜索?pretty=true&search\u type=dfs\u query\u然后\u fetch
{
"explain": false,
"size" : 50,
"sort": [
"_score",
{
"fieldSort": {
"order": "asc"
}
}
],
"query": {
"bool" : {
"must" : {
"bool" : {
"minimum_should_match":"2",
"should" : [
{"match" : { "fieldDisplayFullName" : "peter" }},
{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
]
}
},
"should" : [
{"match_phrase_prefix" : { "fieldSort" : {"query" : "peter chr","boost" : 10}}}
]
}
}
}
结果:
{
"persons_index": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "persons_index",
"creation_date": "1499881803116",
"analysis": {
"filter": {
"ascii_folding_preserve_original": {
"type": "asciifolding",
"preserve_original": "true"
},
"names_synonym_filter": {
"type": "synonym",
"synonyms": [
"aage,åge",
"gaard,gård"
]
}
},
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase",
"trim",
"names_synonym_filter",
"ascii_folding_preserve_original"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "LxMHLha-R02i__S7gDWBtA",
"version": {
"created": "5050099"
}
}
}
}
}
{
"persons_index": {
"mappings": {
"persons_type": {
"properties": {
"fieldDisplayFullName": {
"type": "text",
"norms": false,
"analyzer": "my_analyzer"
},
"fieldSort": {
"type": "text",
"norms": false,
"analyzer": "keyword",
"fielddata": true
}
}
}
}
}
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
"explain": false,
"size" : 50,
"sort": [
"_score",
{
"fieldSort": {
"order": "asc"
}
}
],
"query": {
"bool" : {
"must" : {
"bool" : {
"minimum_should_match":"2",
"should" : [
{"match" : { "fieldDisplayFullName" : "peter" }},
{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
]
}
},
"should" : [
{"span_first" : {
"match" : {
"span_term" : { "fieldDisplayFullName" : "peter" }
},
"end" : 1,
"boost" : 50.0
}},
{"span_first" : {
"match" : {
"span_multi":{
"match":{
"wildcard" : { "fieldDisplayFullName" : "chr*" }
}
}
},
"end" : 2,
"boost" : 50.0
}}
]
}
}
}
“彼得·克里斯坦森(14.909464分)”重复出现
不同查询尝试未成功:
{
"persons_index": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "persons_index",
"creation_date": "1499881803116",
"analysis": {
"filter": {
"ascii_folding_preserve_original": {
"type": "asciifolding",
"preserve_original": "true"
},
"names_synonym_filter": {
"type": "synonym",
"synonyms": [
"aage,åge",
"gaard,gård"
]
}
},
"analyzer": {
"my_analyzer": {
"filter": [
"lowercase",
"trim",
"names_synonym_filter",
"ascii_folding_preserve_original"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "LxMHLha-R02i__S7gDWBtA",
"version": {
"created": "5050099"
}
}
}
}
}
{
"persons_index": {
"mappings": {
"persons_type": {
"properties": {
"fieldDisplayFullName": {
"type": "text",
"norms": false,
"analyzer": "my_analyzer"
},
"fieldSort": {
"type": "text",
"norms": false,
"analyzer": "keyword",
"fielddata": true
}
}
}
}
}
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
"explain": false,
"size" : 50,
"sort": [
"_score",
{
"fieldSort": {
"order": "asc"
}
}
],
"query": {
"bool" : {
"must" : {
"bool" : {
"minimum_should_match":"2",
"should" : [
{"match" : { "fieldDisplayFullName" : "peter" }},
{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
]
}
},
"should" : [
{"span_first" : {
"match" : {
"span_term" : { "fieldDisplayFullName" : "peter" }
},
"end" : 1,
"boost" : 50.0
}},
{"span_first" : {
"match" : {
"span_multi":{
"match":{
"wildcard" : { "fieldDisplayFullName" : "chr*" }
}
}
},
"end" : 2,
"boost" : 50.0
}}
]
}
}
}
看看Elasticsearch是如何进行搜索的,尤其是在(反向文档频率)上 因此,您可以尝试通过忽略IDF来解决此问题。我遇到了一个类似的问题,我通过更改applied-to-querys解决了这个问题 您的配置是否在多个服务器上运行 干杯,多米尼克用“恒定分数”解决
你好,多米尼克。谢谢你的回答。我刚刚用更多信息更新了我的问题。我正在使用search\u type=dfs\u query\u然后\u fetch。碎片的数量是5?今天晚些时候,我将深入挖掘您提供给我的链接并返回。谢谢JesperThanks Dominik让我走上了正确的方向。在阅读了你的“方法”链接后,我花了5分钟用“恒定分数”来解决问题。谢谢你发布你的解决方案!当心点,多米尼克:)