JavaScript Algolia-如何使用空搜索字符串启动新搜索



我在Angular应用中具有一个功能,其中我的Algolia数据库中存在一些可搜索的项目。问题是...它们无法通过任何字符串搜索。它们只能通过方面搜索。

问题在于,当我使用一个空字符串 我的搜索过滤器/置换器运行初始.search()函数时,我会返回列表,一切都很好且花花公子。但是,当我再次运行该功能以刷新列表时,除非我更改一个过滤器/置换器,否则它将带有相同的结果,实际上永远不会发出新的请求。

有什么方法可以在我想要的任何时候强制搜索查询,而无需指定"新"搜索条件?

这是我的搜索功能:

searchForAuditions() {
    // Setup the filters/options
    let options = {
      highlightPreTag: '<span class="highlighted">',
      highlightPostTag: '</span>',
      hitsPerPage: 10,
    };
    // Add clause to make sure "is_deleted" is false
    let isDeleted = ` is_deleted: "false"`;
    let facets = `${isDeleted}`;
    // Replace all trailing spaces and split it into an array
    let facetWords = facets.replace(/s+$/, '').split(" ");
    // Remove trailing "AND"
    if((facetWords[facetWords.length - 1] === "AND") || (facetWords[facetWords.length - 1] === "OR")) {
      facetWords.splice(-1, 1);
      facets = facetWords.join(' ');
    }
    if(facets) {
      options['filters'] = facets;
    }
    this.auditionsIndex.search('', options).then(result => {
      this.results = result.hits;
    })
  }

预先感谢!

来自Algolia JavaScript客户端文档,

避免执行相同的API调用两次搜索结果将存储在将绑定到您的JavaScript客户端和索引对象的缓存中。每当对特定查询(和过滤器)进行调用时,我们将结果存储在本地缓存中。如果您再次调用完全相同的查询,我们会读取缓存的结果,而不是进行API调用。

当您的用户删除字符时,这特别有用 从当前的查询中,以避免无用的API调用。因为它是 存储为简单的JavaScript对象,在内存中,缓存为 每当您重新加载页面时自动重置。

要解决此问题,您应该使用

index.clearCache()client.clearCache()

在此处阅读有关内置的缓存系统的更多信息。
https://github.com/algolia/algoliasearch-client-javascript#cache

最新更新