我为我的搜索引擎搜索一个基于ES 5.4的解决方案。当我的用户写了一个请求时,如果我的一个结果以相同的单词开始,我需要给出一个更好的分数。
对我来说,当我的客户在我的搜索栏中写下"disque de frein“时,所有的第一个结果都是
"disque de frein pour golf“
"disque de frein pour porsche“
"disque de frein pour audi“
然后
“de disque de frein的保护”
但现在,最后的结果得到了比其他结果更好的分数。
顺便说一下,我使用FOSElasticaBundle,但我只需要知道如何才能获得好的结果。
下面是我的问题:
{
"query":{
"bool":{
"should":[
{
"match":{
"produitLibFr":{
"query":"disque de frein"
}
}
}]
}
}
}
results :
{
"_index": "app",
"_type": "produit",
"_id": "41666191",
"_score": 10.558487,
"_source": {
"produitRef": "FA42436",
"produitLibFr": "Pied à coulisse pour disques de frein",
"produitLibEs": "",
"produitLibGb": "",
"produitLibNl": "",
"produitLibPt": ""
}
},
{
"_index": "app",
"_type": "produit",
"_id": "41666369",
"_score": 10.5379715,
"_source": {
"produitRef": "FA43075",
"produitLibFr": "Module freins à disques",
"produitLibEs": "",
"produitLibGb": "",
"produitLibNl": "",
"produitLibPt": ""
}
},
{
"_index": "app",
"_type": "produit",
"_id": "67938479",
"_score": 9.800581,
"_source": {
"produitRef": "GH28306",
"produitLibFr": "Disque de frein arrière pour Scirocco & Corrado",
"produitLibEs": "1 Disco de freno trasero para Scirocco & Corrado",
"produitLibGb": "1 Rear brake disc for Scirocco & Corrado",
"produitLibNl": "1 remschijf voor de achterrem voor Scirocco & Corrado",
"produitLibPt": ""
}
}我要把最后一个放在第一个位置...
你有线索给我吗?
谢谢!
编辑
我尝试了@Lupanoide解决方案,得到了以下结果:
Appareil de mesure pour disques de frein - 30.441166
Accessoires pour mesurer les disques de frein - 30.441166
Appareil de mesure pour disques de frein - 30.204206
Accessoires pour mesurer les disques de frein - 29.945782
Protecteur de disque de frein arrière droit - 28.547125
然后是好的那一个:
Disque de frein arrière pour Scirocco & Corrado - 28.547125
分数增加了,但仍然存在同样的问题。boost参数很有趣,但我们只能负地提升一个字段,我需要正向提升match_phrase_prefix字段
发布于 2018-04-04 19:06:50
尝试:
{
"query": {
"bool": {
"must": [
{
"match": {
"produitLibFr": {
"query": "disque de frein"
}
}
}
],
"should": [
{
"match_phrase_prefix": {
"produitLibFr": "disque de frein"
}
}
]
}
}
}此查询匹配两种情况:
在第一个文档中,检索到的文档的"produitLibFr"字段中必须有“ de frein”。在第二个文档中,检索到的文档的content of
如果文档匹配,则两个子句都将具有更高的评级分数。要增加分数值,可以考虑使用boost参数- doc here
https://stackoverflow.com/questions/49648363
复制相似问题