0

我在List<Product>服务器上有一个 ASP.NET Web 应用程序和一个(在 Application[] 商店中)。类 Product 有一个 Name 属性。我需要让用户能够根据名称搜索产品。例如,如果用户键入“honda computer”,则应用程序必须显示“2001 Honda Passport Engine Computer (OEM)”。搜索必须非常快,将来我将添加自动完成功能(AJAX)。

到目前为止,我有几个想法如何解决这个问题:

  1. 编写或使用诸如 B-Tree、Trie、后缀树、前缀树之类的开源实现。不幸的是,数据结构和算法并不是我最强的技能(该死的哈佛,这么多钱是白来的)。

  2. 使用搜索引擎 - Lucene.NET、Velocity 或 MemCached.NET。从来没有用过,所以我不知道他们是否能在这种情况下工作。我不需要搜索同义词,而且我的应用没有访问文件系统的权限(因此没有索引文件)。

欢迎任何建议。

4

2 回答 2

1

这些产品是否随时都存储在数据库中?许多流行的数据库(包括 Microsoft SQL Server)都支持自由文本搜索索引,这是一种在大型数据集中进行文本搜索的快速方法。

于 2010-11-24T03:14:22.373 回答
0

Depending upon how much data you have, using a suffix tree would actually be an extremely good idea. Generally users are going to type from the beginning of a phrase when a text-box has auto-suggest enabled and since you can search the tree on the basis of the characters that are being input by the user input as it, a suffix tree would automatically filter down the possible suggestions and also provide you with the suggestions to display by navigating the tree.

While it is true that they can be complicated to implement, you might be able to find one written for .NET already. However, because they tend to be very useful, you can find some good materials with information on how to write your own.

于 2010-11-24T03:43:15.043 回答