我在algolia的排名配置方面遇到了一些困难。 当我搜索" Contrat"时,我有这样的结果集。 :
[
{
"ope_id" : 1,
"ope_lib" : "Contrat de maintenance en entretien de toitures",
"ope_description" : "Réalisation d'un entretien régulier des toitures",
"ope_nb_offre" : "42"
},
{
"ope_id" : 2,
"ope_lib" : "Contrat d'entretien de pompe à chaleur",
"ope_description" : "<h2>Confort et sécurité au quotidien</h2> <h3>Votre domicile est équipé d’une pompe à chaleur comme système de chauffage ?</h3>Qu’elle soit géothermique ou aérothermique, il est indispensable de veiller à son entretien. En effet, en cas de dysfonctionnement, son efficacité sera réduite ce qui nuira à votre confort intérieur.En souscrivant un contrat d’entretien avec un professionnel pour votre pompe à chaleur, la durée de vie de votre installation sera prolongée et ses performances seront en permanence optimales, vous évitant ainsi toute augmentation de vos dépenses énergétiques.<h3>Le contrat d’entretien inclut :</h3> <ul> <li>Une révision annuelle de votre pompe à chaleur</li> <li>La vérification des fluides frigorigènes par un professionnel certifié Qualipac (opération imposée par la réglementation sur les appareils contenant plus de 2 kg de fluide)</li> <li>le remplacement des pièces et accessoires usagés</li> <li>un service de dépannage</li> </ul>",
"ope_nb_offre" : "41"
},
{
"ope_id" : 3,
"ope_lib" : "Contrat d'entretien de chaudière murale au gaz",
"ope_description" : "<h2>Economie d'énergie et sécurité de votre habitat</h2> <h3>Pour le chauffage et la production d’eau chaude, vous utilisez une chaudière au gaz ?</h3><span style=\"font-size: small;\">Les défaillances de cet appareil peuvent avoir des conséquences désagréables voire dangereuses. Afin d’éviter les risques de panne ou d’intoxication, vous avez la possibilité de souscrire un contrat d’entretien auprès d’un professionnel spécialisé.</span> <span style=\"font-size: small;\">Ce contrat vous garantira le bon état permanent de votre chaudière, il comprend : </span><h3 style=\"text-align: left;\"><span style=\"font-size: medium;\">Une visite annuelle incluant :</span></h3> <div> <ul> <li style=\"text-align: left;\"><span style=\"font-size: small;\"> Le nettoyage des composants de votre chaudière ( corps de chauffe , brûleur , extracteur, veilleuse)</span></li> <li style=\"text-align: left;\"><span style=\"font-size: small;\"> Le réglage des organes de régulations et des systèmes de sécurité</span></li> <li style=\"text-align: left;\"><span style=\"font-size: small;\"> La vérification de l’état, de la nature et de la géométrie du conduit de raccordement de l’appareil.</span></li> <li style=\"text-align: left;\"><span style=\"font-size: small;\"> La mesure des polluants atmosphériques (teneur en monoxyde de carbone)</span></li> <li style=\"text-align: left;\"><span style=\"font-size: small;\"> Le contrôle des points liés à la sécurité des biens et des personnes (entrée d\'air, évacuation des gaz de combustion)</span></li> </ul> <h3><span style=\"font-size: medium;\">Un dépannage éventuel sur appel justifié du souscripteur du contrat</span></h3> </div> <h2>Certificat nécessaire à votre assurance</h2>",
"ope_nb_offre" : "265"
}
]
&#13;
而且我不明白为什么ope_id 1会在另一个之前显示出来。 这是ma algolia配置: 可搜索的属性:&#34; ope_lib,ope_description&#34; (无序的) 自定义排名属性:&#34; ope_nb_offre&#34;。 按属性排序:false。 排名公式: - 错字 - 属性 - 确切的 - 地理 - 单词 - 过滤器 - 接近 自定义排名标准(如上所述):desc(op_nb_offre)。
ope_id 3更多出现了我的搜索关键字&#34; contrat&#34;并且比其他人更多的是ope_nb_offre,但它仍然显示在它们之后。
如果有帮助,这是每个结果的排名信息:
OPE_ID 1:
1 Number of typos 0
2 Best matching attribute
- ope_lib,ope_description (1st word)
3 Exact words count 0 (=> Why 0??)
4 Matching words 1
5 Matching filters 0
6 Proximity distance 0
7 Custom Ranking
- ope_nb_offre_total=42
OPE_ID 2
1 Number of typos 0
2 Best matching attribute
- ope_lib,ope_description (1st word)
3 Exact words count 0 (=> Why 0??)
4 Matching words 1
5 Matching filters 0
6 Proximity distance 0
7 Custom Ranking
- ope_nb_offre_total=41
was
- ope_nb_offre_total=42
OPE_ID 3
1 Number of typos 0
2 Best matching attribute
- ope_lib,ope_description (1st word)
3 Exact words count 0
4 Matching words 1
5 Matching filters 0
6 Proximity distance 0
7 Custom Ranking
- ope_nb_offre_total=265
was
- ope_nb_offre_total=27 (=> and why is 27 after 265??)
&#13;
我想我已经提供了所有的信息。如果有人有任何线索,请告诉我!
谢谢!
答案 0 :(得分:6)
为什么在265之后是27?
属性ope_nb_offre
已被推送到Algolia string
。
这意味着,当引擎达到自定义排名规则以确定哪个记录最相关时
它实际上会尝试按字母顺序排序而不是数字排序。
要解决此问题,您应该重新索引数据,并确保将该属性转换为整数。
为什么没有确切的单词计数
Algolia使用前缀匹配来确定记录的文本相关性。 前缀匹配意味着如果键入“soft”,它将返回具有包含的可搜索属性的结果 “软件”。
只要您的单词没有完成,查询字符串就被视为前缀,这意味着它不是完美匹配。 引擎无法知道您是否已完成输入。
如果您要在“Contrat”之后添加“空格”,那么您将看到完全匹配。
词汇频率
我的假设是你在Algolia中有以下配置:
可搜索的属性:
您在这里告诉引擎的是,它应首先尝试在ope_lib
中找到匹配的字词,然后在ope_description
中找到匹配的字词。
这里重要的是它们在配置中出现的顺序。
在您的配置中,如果ope_lib
中匹配的内容匹配,则ope_description
上不会进行匹配。
要解决此问题,您可以在仪表板中的同一级别添加这两个属性。
这是一个截图,说明你应该做什么。
请注意,在这种情况下,如果您有多个属性,则不需要将属性包装到unordered
中,因为它是默认属性
在同一水平。