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

时间:2008-12-23 21:28:04

标签: c# asp.net sql-server linq search

现在似乎有一个常见的要求是拥有一个可以搜索几乎任何你想要的搜索功能。任何人都可以给我一些关于如何构建一站式搜索应用程序的示例或提示吗?

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

我如何搜索说“凤凰”一词并且有

之类的结果

客户

Result 1
......

产品

Result 1
......

员工

Result 1
......

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

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

提前致谢!

7 个答案:

答案 0 :(得分:3)

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

样本用法:

Source code

开始,查看DotNetKickscodebehind of search page

答案 1 :(得分:2)

如果你想要一些真正可扩展的东西,我想你必须首先构建一个数据字典,列出数据库中的每个表和每一列。这样一个表的构建可以是fully automated

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

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

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

答案 2 :(得分:1)

一种方法是find the searched value in all tables in the database。当然,可以更改此代码以专注于特定的表和列。

答案 3 :(得分:1)

Xapian是一个开源搜索引擎库,其中包含您正在寻找的features

答案 4 :(得分:0)

跟进fall888的回答:

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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