我在服务器上(在Application []存储中)有一个ASP.NET Web应用程序和一个List<Product>
。 Class Product具有Name属性。我需要让用户能够根据名称搜索产品。例如,如果用户键入“本田计算机”,该应用程序必须显示“2001本田Passport引擎计算机(OEM)”。搜索必须非常快,将来我会添加自动完成功能(AJAX)。
到目前为止,我有几个想法如何解决这个问题:
编写或使用B-Tree,Trie,Suffix tree,Prefix tree等开源实现。不幸的是,数据结构和算法不是我最强的技能(该死的哈佛,这么多钱都没有)。
使用搜索引擎 - Lucene.NET,Velocity或MemCached.NET。从未使用过,所以我不知道它们是否适用于这种情况。我不需要搜索同义词,我的应用程序没有访问文件系统的权限(因此没有索引文件)。
欢迎任何建议。
答案 0 :(得分:1)
这些产品是否随时都存储在数据库中?许多流行的数据库(包括Microsoft SQL Server)支持自由文本搜索索引,这是跨大型数据集进行文本搜索的快速方法。
答案 1 :(得分:0)
根据您拥有的数据量,使用suffix tree实际上是一个非常好的主意。通常,当文本框启用了自动建议时,用户将从短语的开头键入,并且由于您可以根据用户输入所输入的字符搜索树,因此后缀树将自动过滤可能的建议,并通过导航树为您提供显示建议。
虽然它们实现起来很复杂,但您可能已经找到了一个已经为.NET编写的程序。但是,因为它们往往非常有用,所以你可以找到一些好材料with information on how to write your own。