【问题标题】:setting initial facet/refinement values when using instantsearch.js使用 Instantsearch.js 时设置初始构面/细化值
【发布时间】:2016-05-25 16:38:49
【问题描述】:

我正在使用 Instantsearch.js 和小部件的组合来显示我的搜索结果(几乎完全按照 demos 建模)。

我需要为构面设置一些初始值,以便默认过滤某些项目。我该怎么做呢?我知道 AlgoliaSearchHelper (helper) 对象有一个方法 toggleRefinement 应该允许我这样做,但我似乎无法在调用 search.start() 之前访问这个帮助器,它执行初始查询。

任何关于如何设置一些默认优化的建议或见解将不胜感激。谢谢。

更新:这不是重复的 - 我的问题似乎与 Instantsearch.widget.toggle 有关。看起来这个小部件在初始搜索之前在幕后设置了默认值。我已将代码调整为不使用此小部件,而仅设置 searchParameters.tagFilters 属性。这是切换小部件对我的影响,因为我无法弄清楚如何覆盖其默认过滤。

【问题讨论】:

标签: algolia


【解决方案1】:

将初始过滤器添加到您的 instantsearch.js 实例的最简单方法是使用额外的自定义小部件:

  var search = instantsearch({
    appId: 'YourApplicationID',
    apiKey: 'YourSearchOnlyAPIKey',
    indexName: 'YourIndexName'
  });

  search.addWidget(
    instantsearch.widgets.searchBox({
      container: '#search-box',
      placeholder: 'Search for FIXME...'
    })
  );

  search.addWidget(
    instantsearch.widgets.hits({
      container: '#hits-container',
      templates: {
        item: 'Hit {{objectID}}: FIXME'
      }
    })
  );

  // setup initial filters
  search.addWidget({
    init: function(options) {
       // use options.helper (https://github.com/algolia/algoliasearch-helper-js) to initialize the search with custom filters & parameters
       options.helper.addFacetRefinement('MyFacet', 'my value');
    }
  });

  search.start();

【讨论】:

  • 我收到一个错误MyFacet is not defined in the facets attribute of the helper configuration,但是toggleRefinement 有效。
【解决方案2】:

你确实是对的,在切换小部件uses the off value if provided

if (userValues.off === undefined) {
  return;
}
// Add filtering on the 'off' value if set
let isRefined = state.isFacetRefined(attributeName, userValues.on);
if (!isRefined) {
  helper.addFacetRefinement(attributeName, userValues.off);
}

为避免其他用户产生这种不理解,现在instantsearch.js 上有一个PR,并进行了以下更新:

请注意,如果您提供“关闭”选项,它将在初始化时进行优化。

【讨论】:

    【解决方案3】:

    我的问题似乎与 Instantsearch.widget.toggle 相关。看起来这个小部件在初始搜索之前在幕后设置了默认值。我已将代码调整为不使用此小部件,而仅设置 searchParameters.tagFilters 属性。这是切换小部件对我的影响,因为我无法弄清楚如何覆盖其默认过滤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-03
      • 2012-12-15
      • 1970-01-01
      • 2016-05-27
      • 2014-04-10
      • 2023-03-03
      • 1970-01-01
      • 2011-02-13
      相关资源
      最近更新 更多