将特定关键字与特定结果匹配

时间:2016-07-29 18:13:16

标签: algolia

我们需要让特定的搜索关键字提供特定的结果。有没有办法在Algolia控制台内执行此操作?

1 个答案:

答案 0 :(得分:2)

没有开箱即用的功能,但您可以使用2种不同的解决方案重现此类行为:

快速解决方法:在记录中添加搜索关键字

您可以为对象添加新的keyword属性,并列出要用于每个对象的所有关键字。

with attributesToIndex:

keyword属性置于attributesToIndex之上将使其与其他属性匹配。

或使用attributesForFaceting:

keyword属性放在attributesForFaceting中可让您对其进行过滤。对于每个单独的搜索,您可以执行额外的查询,将查询字符串作为过滤器:index.search('' /* empty query string: match all */, { facetFilters: "keyword:THE_USER_QUERY_STRING" })并检查是否匹配时使用结果,否则使用常规搜索查询。

更好的选择:使用附加索引

使用其他索引,您可以为每个要处理的搜索关键字推送1条记录。

此类索引的记录如下所示:

{
   "keyword": "mykeyword",
   "object": {
     // the object you want to retrieve
   }
}

仅将attributesToIndex配置为keyword。您可能还希望将该额外索引的queryType配置为prefixNone,以便原生前缀搜索不会触发。 (相反,你也可以在这里使用facetFilters方法。)

对于每次搜索,您将查询2个索引:原始索引和此额外索引。如果额外的一个匹配,您可以在搜索结果中注入对象。