SQL 2008中部分搜索的最佳方法

时间:2010-01-22 16:25:45

标签: sql-server-2008 full-text-search

我已经研究过SQL 2008的内置全文搜索,以及Lucene.NET ..但我不认为他们会做我需要做的事情。我只想确保尽可能高效地构建我的程序。

所以这就是梦想。我希望在页面上有一个文本框(比如谷歌),并允许用户输入任何内容。根据他们的文本,我将搜索10个表格以找到他们正在寻找的内容。

实施例。我的数据库包含数千个位置,每个位置都有多个名称/代码。在每个位置,都有大量与之相关的数据。

因此,如果用户想要显示包含“VM”(“CD-VM01”,“CD-VM02”,“CD-VM03”等)的代码的所有位置,他们应该能够。或者,如果他们想要找到多伦多的所有地点,他们只需输入多伦多..我想让人们尽可能轻松地进行搜索。 (我发现人们不喜欢思考)..

另外,如果我可以只搜索数据库,而不必在搜索屏幕中添加新字段,则最终可以更容易扩展到更多搜索选项。

所以,如果我不使用全文搜索(我不能部分),我唯一可以看到的就是“喜欢”..是吗?这是我唯一的选择吗?

3 个答案:

答案 0 :(得分:0)

我想问题是,即使您能够在数据库中执行此操作,您将如何在UI中处理它?<​​/ p>

很可能每个来自不同表的搜索结果都会有不同的属性需要显示,以便最终用户了解它是什么。

Google搜索框只需搜索一件事 - 网页内容 - 并返回一种结果 - 网页网址和摘录。从根本上说,您正在尝试搜索许多不同的内容,因此您很可能需要单独处理每个案例。

或者,您可以维护一个非规范化搜索表,该表仅包含搜索文本以及您认为每次匹配时需要显示的公共属性。使用计划任务或触发器维护它。你也可以在这上面使用FTS。

<强>更新

有些评论表达了SQL Server全文搜索功能的一些不确定性。 FTS绝对可以在列的文本中的任何位置搜索单个字符串,也可以执行其他操作(邻近搜索,自由文本搜索等)。如果您刚刚开始,那么我建议{关于这个主题的{3}}页面,文档非常全面。

特别是我建议您查看TechNetConfiguring Catalogs页面上的部分(Cole的注释:您必须创建目录 - 在没有他们的情况下编写CONTAINS个查询' t让你走得很远)然后查看Getting Started页面。如果你找不到任何和所有问题的答案,我会感到非常惊讶。

如果你仍然无法让它发挥作用,我会发布一个新问题,其中包含你的问题 - 你尝试过什么,你期待什么,以及发生了什么。

答案 1 :(得分:0)

我相信Lucene完全符合您的要求。您可以从任何外部数据源(包括多个数据库表)添加索引,然后查询该索引,您将获得指向匹配记录的指针。

缺点是,与全文索引不同,您自己负责构建和维护索引。

您可以看到an example of how Lucene.NET might be used

答案 2 :(得分:0)

对于这个确切的问题,似乎最简单/最快的解决方案是使用LIKE。