为 Algolia 搜索结果正确使用 Facets

Posted

技术标签:

【中文标题】为 Algolia 搜索结果正确使用 Facets【英文标题】:Properly using Facets for Algolia Search Results 【发布时间】:2017-12-08 04:38:27 【问题描述】:

我有一个带有以下 JSON 键的索引,并且可以有两个值:

ApprovalFL: trueApprovalFL: null

我希望我的搜索结果仅显示带有 ApprovalFL: true 的结果,这意味着它们已获准在网站上显示。

我尝试研究 Algolia Facet 方法 (https://www.algolia.com/doc/guides/searching/faceting/#search-for-facet-values),但老实说,我不太确定将它放在我的代码中的哪个位置,(开发人员最初设置了 Algolia……我仍在学习)这是我的相关 javascript :https://jsfiddle.net/***vt9vv/1

这是我的代码的 sn-p,其余的可以在上面的链接中找到:

var searchSong = instantsearch
    (
        appId: "---",
        apiKey: "---",
        indexName: "Song",
        searchFunction: function (helper) 
            var query = searchArtist.helper.state.query;

            helper.state.index = "Song";
            helper.state.hitsPerPage = 30;
            helper.setQuery(query);
            helper.search();
        ,
        searchParameters:
        
            hitsPerPage: 30
        
    );

我已经在 Algolia Dashboard 页面中添加了“attributesforFaceting”的键。

如果您想查看实时示例,请转到 https://unearthapp.io 并在搜索栏中输入字母“a”,您将看到来自名为“Turbo”的艺术家的两个结果,当我只希望 ApprovalFL 为 true 的歌曲显示

如果您需要更多信息,请告诉我,谢谢!

【问题讨论】:

您是否尝试将facetFilters 设置为["ApprovalFL:true"]?尝试将其放在 searchFunctionsearchParameters 中。 @NanduKalidindi 我想我的问题是,我应该把它放在哪里? options.helper.setQuery(e.currentTarget.value).addFacetRefinement('ApprovalFL', true).search() 可能是init 函数中的这一行?也可以尝试使用字符串“true”。 @NanduKalidindi 说它期望“;”错误snag.gy/3kRLNv.jpg @NanduKalidindi 我找到了这个参考,但我不确定我应该把它放在哪里参考我的代码:algolia.com/doc/api-reference/api-parameters/facetFilters 【参考方案1】:

您可以使用facetFilters并将其设置为["ApprovalFL:true"]

FACET FILTERS

根据您的代码结构,您可以在searchFunction 中添加它searchParameters 中,如下所示。理想情况下,您希望在代码中添加一次搜索过滤器,否则代码可能会由于在许多地方的声明而变得不可预测。

var searchSong = instantsearch (
    appId: "---",
    apiKey: "---",
    indexName: "Song",
    searchFunction: function (helper) 
        .
        .
        .
        helper.state.facetFilters = ["ApprovalFL:true"];
        .
        .
        .       
    ,
    searchParameters: 
        hitsPerPage: 30,
        facetFilters: ["ApprovalFL:true"]
    
);

【讨论】:

以上是关于为 Algolia 搜索结果正确使用 Facets的主要内容,如果未能解决你的问题,请参考以下文章

VuePress - Algolia 增加结果

Hexo next主题安装algolia

Algolia Search

Xcode 12 和 Algolia 搜索客户端?

使用 Algolia 的 Firestore 数据库

Algolia:在 Laravel 中搜索多个索引