django - Algolia 排名边缘案例
问题描述
我是 Algolia 和 Django 的新手,因此对于以下任务的任何帮助将不胜感激。
我正在尝试重新排列 UI 上的搜索结果,以使某些边缘情况不再引起问题。问题是最初只使用了一个可搜索的属性,但我们实际上希望将那个属性分成 2 个。我这样做了,所以我将初始属性分成 2 个属性,调用它们attribute_1
并attribute_2
在设置中传递它们文件如下index.py
:
"searchableAttributes": [
"attribute_1",
"attribute_2"
]
然后将以下内容传递给排名选项:
"ranking": [
"typo",
"exact",
"words",
"attribute",
"proximity",
"filters",
"custom",
]
从文档中我了解到,在上述列表中添加属性的顺序优先于搜索,因此搜索引擎将首先attribute_1
在attribute_2
. 这解决了其中一种边缘情况的问题,但仍有一种边缘情况没有解决。我将在下面更详细地解释这个边缘案例的问题。
调用我想为剩余的边缘情况 E1 和 E2 排名的 2 个示例。
搜索关键字 call it与 E1some_text
完全匹配attribute_1
,但在 E1 内根本找不到attribute_2
,而some_text
包含在attribute_2
E2 内(不是完全匹配,只是严格包含在 内attribute_2
),也被视为attribute_1
E2 内的错字匹配. 这导致 E2 在搜索结果中的排名高于 E1,而我希望它们的排名正好相反。
我尝试使用restrictSearchableAttributes(https://www.algolia.com/doc/api-reference/api-parameters/restrictSearchableAttributes/),我可以在仪表板上根据需要重新排列E1和E2,但不能从代码库中重新排列。但是,我认为这attribute_2
在执行搜索时会被忽略,这实际上是我不想要的,因为我希望在两个字段上都执行搜索,只是匹配 in 的搜索attribute_1
排名应该高于匹配 in 的搜索attribute_2
。我还尝试增加minWordSizefor1Typo
并使minWordSizefor2Typos
错字限制更严格,但我仍然没有设法解决问题。
有谁知道如何解决这个问题?任何帮助将不胜感激,如果需要,我可以提供更多上下文/说明。谢谢!
解决方案
推荐阅读
- java - 软件改变移动网络模式
- apache-nifi - 是否可以将 Apache Nifi H2 数据库更改为其他数据库(如 Mysql / postgress)
- php - PHP __toString() 魔术方法不返回字符串(解决方案)
- augmented-reality - Spark AR 是否支持透明视频?
- parsing - 如何解析 imagick 标识的标准输出?
- oracle-apex - Oracle APEX - 如何将交互式网格列(仅显示)变成多行
- android - 为 2 模块项目中的单个模块启用 ProGuard
- python - 使用 SymPy 查找数字的简单表示
- python-3.x - 使用迭代修改多列数据,但更改每列的增量值
- apache-spark - Spark UDF 检索最后一个非空值