我如何让Algolia Search保证会返回一些结果

时间:2016-12-21 05:56:10

标签: algolia

我需要Algolia总是从全文搜索中返回5个结果,即使查询文本本身与实际返回的结果几乎没有关联。在有人建议之前,我已经尝试将removeWordsIfNoResults选项设置为所有可能的模式,这仍然不能保证我得到我的5个结果。

这样做的目的是创建一个相关的实体'侧栏,其中当前实体的名称用于搜索其他实体。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

使用removeWordsIfNoResults=allOptional查询参数确实是一个很好的方法 - >因为默认情况下所有查询字都需要匹配一个对象,如果查询字(或单词组合)不匹配,后退为“可选”是一种很好的方法来检索结果任何东西。

index.search(query, { removeWordsIfNoResults: 'allOptional' });

另一个解决方案是始终将所有查询字视为可选(不仅仅是作为后备);确保查询foo bar baz被解释为OPT(foo) AND OPT(bar) AND OPT(baz)< => foo OR bar OR baz。不同之处在于此查询将检索比上一个更多的结果,因为1个匹配的单词足以检索该对象。

index.search(query, { optionalWords: query });

话虽如此,没有办法强迫引擎检索“至少”5个结果。我建议的是有一个小的前端逻辑:   - 使用removeWordsIfNoResultsoptionalWords进行查询   - 如果引擎返回少于5个结果,请执行另一个查询