正确使用Facets进行Algolia搜索结果

时间:2017-12-08 04:38:28

标签: javascript algolia

我有一个使用以下JSON密钥的indice,可以有两个值:

ApprovalFL: trueApprovalFL: null

我希望我的搜索结果只显示ApprovalFL: true的结果,这意味着他们已被批准在网站上显示。

我试着调查Algolia Facet方法(https://www.algolia.com/doc/guides/searching/faceting/#search-for-facet-values),但老实说我不太确定在我的代码中把它放在哪里,(dev开始设置Algolia ......我还在学习)这是我的相关的javascript:https://jsfiddle.net/vpnvt9vv/1

这是我的代码片段,其余部分可以在上面的链接中找到:

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的歌曲显示

时,ApprovalFL为null

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

1 个答案:

答案 0 :(得分:2)

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

FACET FILTERS

在您的代码结构中,您可以将其添加到searchFunction中的searchParameters OR 中,如下所示。理想情况下,您可能希望在代码中添加一次搜索过滤器,否则由于许多地方的声明,代码可能无法预测。

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