【问题标题】:Javascript Algolia - How to initiate a new search with an empty search string?Javascript Algolia - 如何使用空搜索字符串启动新搜索?
【发布时间】:2018-03-05 11:52:36
【问题描述】:

我的 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;
    })
  }

提前致谢!

【问题讨论】:

    标签: javascript angularjs algolia


    【解决方案1】:

    来自 algolia JavaScript 客户端文档,

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

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

    要解决这个问题,您应该使用

    index.clearCache()client.clearCache()

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

    【讨论】:

    • 多么优雅的解决方案。我认为是这种情况,但我在文档中找不到它。感谢您帮助我:D
    • 嘿,关于这个:我注意到,当我在搜索之前运行我的 clearCache 函数时,当结果重新加载时,总是需要两次重新加载才能获得更新,就像重新加载一样是“重新加载”,如果这是有道理的。每次我运行搜索功能时,它都会给我以前应该显示重新加载的旧结果。有什么想法吗?
    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多