Algolia : 搜索结果顺序
Algolia : Search result order
我在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"
}
]
而且我不明白为什么 ope_id 1 显示在另一个之前。
这是 ma algolia 配置:
可搜索属性:"ope_lib,ope_description"(无序)
自定义排名属性:"ope_nb_offre"。
按属性排序:false。
排名公式:
- 打字错误
- 属性
- 精确的
- 地理
- 字
- 过滤器
- 接近
自定义排名标准(如上所述):desc(op_nb_offre).
ope_id 3 我的搜索关键字 "contrat" 和 ha 比另一个多 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??)
我想我提供了我所掌握的所有信息。如果有人有任何线索,请告诉我!
谢谢!
为什么27在265之后?
属性 ope_nb_offre
已作为 string
推送到 Algolia。
这意味着当引擎达到自定义排名规则以确定最相关的记录时
它实际上会尝试按字母顺序而不是数字顺序排序。
要解决这个问题,您应该重新索引数据并确保将该属性转换为整数。
为什么你没有确切的字数
Algolia 使用前缀匹配来确定记录的文本相关性。
前缀匹配意味着如果您键入 "soft" 它将 return 结果具有包含例如的可搜索属性
"software".
只要您的单词没有完成,查询字符串就会被视为前缀,这意味着它不是完美匹配。
引擎无法知道您是否已完成输入。
如果您要在 "Contrat " 之后添加 "space",那么您将看到完全匹配。
词频
我这里的假设是您在 Algolia 中具有以下配置:
可搜索属性:
- 无序(ope_lib)
- 无序(ope_description)
你在这里告诉引擎的是,它应该首先尝试在 ope_lib
中找到匹配的单词,然后在 ope_description
中找到匹配的单词。
这里重要的是它们在配置中出现的顺序。
在您的配置中,如果在 ope_lib
中匹配某些内容,则不会在 ope_description
中进行匹配。
要解决此问题,您可以在仪表板的同一级别添加这两个属性。
这是一个屏幕截图,用于说明您应该做什么。
请注意,在这种情况下,如果您有多个属性,则不需要将属性包装到 unordered
中,因为这是默认设置
同级别。
我在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"
}
]
而且我不明白为什么 ope_id 1 显示在另一个之前。 这是 ma algolia 配置: 可搜索属性:"ope_lib,ope_description"(无序) 自定义排名属性:"ope_nb_offre"。 按属性排序:false。 排名公式: - 打字错误 - 属性 - 精确的 - 地理 - 字 - 过滤器 - 接近 自定义排名标准(如上所述):desc(op_nb_offre).
ope_id 3 我的搜索关键字 "contrat" 和 ha 比另一个多 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??)
我想我提供了我所掌握的所有信息。如果有人有任何线索,请告诉我!
谢谢!
为什么27在265之后?
属性 ope_nb_offre
已作为 string
推送到 Algolia。
这意味着当引擎达到自定义排名规则以确定最相关的记录时
它实际上会尝试按字母顺序而不是数字顺序排序。
要解决这个问题,您应该重新索引数据并确保将该属性转换为整数。
为什么你没有确切的字数
Algolia 使用前缀匹配来确定记录的文本相关性。 前缀匹配意味着如果您键入 "soft" 它将 return 结果具有包含例如的可搜索属性 "software".
只要您的单词没有完成,查询字符串就会被视为前缀,这意味着它不是完美匹配。 引擎无法知道您是否已完成输入。
如果您要在 "Contrat " 之后添加 "space",那么您将看到完全匹配。
词频
我这里的假设是您在 Algolia 中具有以下配置:
可搜索属性:
- 无序(ope_lib)
- 无序(ope_description)
你在这里告诉引擎的是,它应该首先尝试在 ope_lib
中找到匹配的单词,然后在 ope_description
中找到匹配的单词。
这里重要的是它们在配置中出现的顺序。
在您的配置中,如果在 ope_lib
中匹配某些内容,则不会在 ope_description
中进行匹配。
要解决此问题,您可以在仪表板的同一级别添加这两个属性。
这是一个屏幕截图,用于说明您应该做什么。
请注意,在这种情况下,如果您有多个属性,则不需要将属性包装到 unordered
中,因为这是默认设置
同级别。