首页 > 解决方案 > Algolia 排名边缘案例

问题描述

我是 Algolia 和 Django 的新手,因此对于以下任务的任何帮助将不胜感激。

我正在尝试重新排列 UI 上的搜索结果,以使某些边缘情况不再引起问题。问题是最初只使用了一个可搜索的属性,但我们实际上希望将那个属性分成 2 个。我这样做了,所以我将初始属性分成 2 个属性,调用它们attribute_1attribute_2在设置中传递它们文件如下index.py

"searchableAttributes": [
            "attribute_1",
            "attribute_2"
        ]

然后将以下内容传递给排名选项:

"ranking": [
            "typo",
            "exact",
            "words",
            "attribute",
            "proximity",
            "filters",
            "custom",
        ]

从文档中我了解到,在上述列表中添加属性的顺序优先于搜索,因此搜索引擎将首先attribute_1attribute_2. 这解决了其中一种边缘情况的问题,但仍有一种边缘情况没有解决。我将在下面更详细地解释这个边缘案例的问题。

调用我想为剩余的边缘情况 E1 和 E2 排名的 2 个示例。

搜索关键字 call it与 E1some_text完全匹配attribute_1,但在 E1 内根本找不到attribute_2,而some_text包含在attribute_2E2 内(不是完全匹配,只是严格包含在 内attribute_2),也被视为attribute_1E2 内的错字匹配. 这导致 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错字限制更严格,但我仍然没有设法解决问题。

有谁知道如何解决这个问题?任何帮助将不胜感激,如果需要,我可以提供更多上下文/说明。谢谢!

标签: djangorankingalgolia

解决方案


推荐阅读