如何为我的应用程序构建搜索机制?

现在似乎有一个常见的要求是拥有一个搜索function,几乎可以搜索任何你想要的东西。 任何人都可以给我样品或提示如何建立一站式搜索应用程序?

例如:您有3个表客户,产品,员工。 该应用程序有一个母版页,右侧有一个文本框,与stackoverflow上的文本框非常相似。

我怎么搜索说“凤凰”一词并且有类似的结果

顾客

Result 1 ...... 

制品

 Result 1 ...... 

雇员

 Result 1 ...... 

任何提示,教程和提示都将非常感激。 我的环境是Win2k3,.net3.5,C#,ASP.net。

编辑:专注于性能和可扩展性。

提前致谢!

Lucene.NET是一个速度极快的全文搜索引擎。

样品用法:

从搜索页面的 代码 隐藏开始,查看DotNetKicks的 源代码

如果你想要一些真正可扩展的东西,我想你必须首先构建一个数据字典,列出数据库中的每个表和每一列。 这种桌子的建造可以完全自动化 。

您将在此表中指出哪些字段可用于直线或软( 带外卡 )搜索。

然后,您将能够构建一些漂亮且智能的用户界面,其中机器将能够发现诸如'*823*'类的代码同时引用'INV-0823456''INV-0880823'发票编号,如发票编号字段可用于软搜索。 用户甚至可以选择选择要搜索的列,因为扫描数据库中的所有电话号码可能并不总是有意义。

您不应该尝试索引所有可搜索的列。 “全索引”策略可以在磁盘卷\服务器开销方面变得非常昂贵,并且对于很少搜索的列而言总是有意义的。 不要担心这一点:用户不会介意得到答案的一些延迟。

一种方法是在数据库中的所有表中查找搜索值 。 当然,可以更改此代码以专注于特定的表和列。

Xapian是一个开源搜索引擎库, 具有您正在寻找的function 。

跟进fall888的回答:

您可以使用一个方法创建一个类,该方法采用数组或搜索关键字列表进行输入。 创建与每个表相关的LINQ查询,例如,在本博客文章中解释的某些方式中使用“LIKE”运算符来搜索正确的列以匹配内容。 当然,这不会很优化,但适用于小型系统:)

如果您使用SQL Server作为数据库,那么您可以尝试SQL的全文搜索。 我已经非常成功地使用它了。

如果您想要一站式搜索解决方案,并希望在您的网站或博客上在几分钟内完成搜索,您可以随时使用BuildaSearch 。 BuildaSearch可以快速轻松地创建自定义搜索。 只需复制并粘贴您的自定义JavaScript代码即可,您可以在您的网站上进行全function的自定义搜索。 此搜索服务最有趣的function是您不需要编写任何代码,也可以在任何Web服务器环境中运行。