Flutter 中的 Algolia 手动自动完成

Fil*_*cks 8 search dart algolia flutter

我正忙于使用 algolia 在 Flutter / Dart 中实现索引搜索。我遇到了一个不是实际问题的问题。我正在努力弄清楚如何查询自动完成结果。意思是,如果我传入“burg”这个词,我应该会得到“bacon burger”、“avo burger”等。

问题不在于颤振,我可以在颤振中做我想做的一切。问题不在于飞镖,我很了解飞镖。问题在于 Algolia 文档以及如果他们没有为平台提供的小部件如何实现自动完成。

我一直在谷歌搜索,我想知道的事情是。

  • 我在查询中传递什么来指示我想要的结果应该是自动完成结果而不是完全匹配。我没有在谷歌中输入所有这些,但这基本上就是我一直在尝试搜索的内容。

我正在使用这个插件并正确设置了实例,因为我可以从我在 Algolia 上的索引数据中获取结果。我正在设置构面并为这些构面过滤器传递值。它适用于普通搜索,但我无法从文档中弄清楚如何调整我的查询以使其返回潜在匹配项的自动完成结果,而不是实际搜索的结果。

我希望这很清楚。让它更清楚。我不需要的东西。

  • 如何设置 Algolia(完成)
  • 如何在 Flutter 中使用 algolia(大功告成)
  • 使用某种架构使这更容易(已完成)。我只需要添加 1 个函数来返回自动完成的标题,该功能将起作用
  • 如何构建自动完成小部件(已完成)
  • 基本上没有特定于颤振、特定于 UI 或特定于架构的帮助。只是如何查询自动完成结果。

我已经查看了 Algolia 文档上的查询建议,但是如果我想从 algolia 实例手动获取这些建议,我需要查询的代码不是很清楚。我看过自动完成 js查询是隐藏的,或者至少从我的眼睛看。我看过Autocomplete Vue无济于事。以及弹出的所有其他自动完成链接。

Jer*_*ska 2

这个问题已经开放很长时间了。我认为您可能不再需要答案,但考虑到投票的数量,它可能仍然值得回答。

您正在寻找的行为在 Algolia 文档中称为“前缀匹配”。

Algolia 中控制此行为的主要参数是queryType
它接受 3 个值:prefixLast, prefixNone& prefixAll

  1. prefixLast仅将查询的最后一个单词视为潜在的前缀。
    前面的所有单词都作为完整单词进行匹配。
    它非常适合“键入时搜索”体验,并且很可能是您正在寻找的价值。
    这是此参数的默认值,因此您应该能够运行client.query("burg")以获得预期的行为。
    注意:如果最后一个单词后面有空格,则不被视为前缀。

  2. prefixNone不将查询中的任何单词视为潜在前缀。
    它非常适合传统的“按 Enter -> 获取搜索结果”体验。

  3. prefixAll匹配查询的所有单词作为前缀。
    这很少是一个好的选择,因为它可能会带来很多误报。
    如果您只想对某些单词使用这种行为(例如“avo”代表“avocado”),我建议您使用同义词。

https://www.algolia.com/doc/api-reference/api-parameters/queryType/

可以在索引设置中或在查询时更改此参数。