【问题标题】:Does a B Tree work well for auto suggest/auto complete web forms?B 树是否适用于自动建议/自动完成网络表单?
【发布时间】:2012-02-04 08:03:21
【问题描述】:

整个网络都使用自动建议/完成字段。 Google 似乎掌握了这一点,因为只要在搜索查询中输入一种类型,建议就会立即返回。

我假设实现这一目标的框架涉及 Web 层上的快速内存数据存储。我们正在构建一个基于零售产品的 Grails 应用程序,因此用户可能会搜索 Can,它应该会建议诸如 CanonCancun 等内容,并想知道缓存在内存中的 Java B-tree 是否足够通过 AJAX 以 JSON 形式返回的快速自动完成。在 jQuery AutoComplete 字段之外,是否存在任何框架和/或库来促进此解决方案的开发?

【问题讨论】:

    标签: search grails autocomplete autosuggest b-tree


    【解决方案1】:

    自动完成是一个文本匹配、信息检索问题。实现自己的 B-tree 并编写自己的逻辑来匹配单词和其他单词是你可以做的事情。但是你必须实现Porter StemmingVector Space ModelString-edit distance calculation

    ...或者您可以使用Lucene 及其衍生物,它们已经做了很多这样的事情。如果你真的关心用于存储这些东西的数据结构,你可以深入研究它的来源。但我非常怀疑自己编写并自己完成从长远来看会更易于维护和更高效。

    其中一个比较流行的 Grails 生态系统插件是 Searchable,在 Ledbrook & Smith 的 Grails in Action 中提到过。它在幕后使用 Lucene,并且很容易将全文搜索添加到您的域类中。 (例如,查看 GinA 中的第 8 章或可搜索的文档)。

    【讨论】:

    • 这是很棒的信息...您为我节省了很多必要的工作,谢谢
    【解决方案2】:

    Grails Richui 插件有一个我过去使用过的自动完成功能。我们将它连接起来以在每次击键时访问数据库(我不建议这样做,但我们的数据经常更改,以至于需要实时数据)。如果您的清单非常静态,那么它可能对您很有效。

    http://grails.org/plugin/richui#AutoComplete

    【讨论】:

    • RichUI 只是用于用户界面,我假设后端源代码仍然留给实现者,对吗?
    • 没错,链接给出了一个很好的例子。在 gsp 中,您告诉它在按下某个键时调用哪个控制器/动作,然后您实现该控制器/动作以返回 xml。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2012-03-17
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多