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

ApprovalFL: trueApprovalFL: null

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

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

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

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仪表板页面中将密钥添加到“ attributesforFaceting”。

如果您想观看现场示例,请在https://jsfiddle.net/vpnvt9vv/1上输入字母“ a”,您会看到来自歌手“ Turbo”的两个结果,当我只想要歌曲时,它们的ApprovalFL为null显示的ApprovalFL为true

让我知道是否需要更多信息,谢谢!

最佳答案

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

FACET FILTERS

从您的代码结构中,您可以将其添加到searchFunctionsearchParameters中,如下所示。理想情况下,您希望在代码中添加一次搜索过滤器,否则由于在许多地方都进行了声明,因此代码可能变得难以理解。

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

关于javascript - 正确使用切面作为Algolia搜索结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47707802/

10-11 08:25