我已经研究过SQL 2008的内置全文搜索,以及Lucene.NET ..但我不认为他们会做我需要做的事情。我只想确保尽可能高效地构建我的程序。
所以这就是梦想。我希望在页面上有一个文本框(比如谷歌),并允许用户输入任何内容。根据他们的文本,我将搜索10个表格以找到他们正在寻找的内容。
实施例。我的数据库包含数千个位置,每个位置都有多个名称/代码。在每个位置,都有大量与之相关的数据。
因此,如果用户想要显示包含“VM”(“CD-VM01”,“CD-VM02”,“CD-VM03”等)的代码的所有位置,他们应该能够。或者,如果他们想要找到多伦多的所有地点,他们只需输入多伦多..我想让人们尽可能轻松地进行搜索。 (我发现人们不喜欢思考)..
另外,如果我可以只搜索数据库,而不必在搜索屏幕中添加新字段,则最终可以更容易扩展到更多搜索选项。
所以,如果我不使用全文搜索(我不能部分),我唯一可以看到的就是“喜欢”..是吗?这是我唯一的选择吗?
答案 0 :(得分:0)
我想问题是,即使您能够在数据库中执行此操作,您将如何在UI中处理它?</ p>
很可能每个来自不同表的搜索结果都会有不同的属性需要显示,以便最终用户了解它是什么。
Google搜索框只需搜索一件事 - 网页内容 - 并返回一种结果 - 网页网址和摘录。从根本上说,您正在尝试搜索许多不同的内容,因此您很可能需要单独处理每个案例。
或者,您可以维护一个非规范化搜索表,该表仅包含搜索文本以及您认为每次匹配时需要显示的公共属性。使用计划任务或触发器维护它。你也可以在这上面使用FTS。
<强>更新强>
有些评论表达了SQL Server全文搜索功能的一些不确定性。 FTS绝对可以在列的文本中的任何位置搜索单个字符串,也可以执行其他操作(邻近搜索,自由文本搜索等)。如果您刚刚开始,那么我建议{关于这个主题的{3}}页面,文档非常全面。
特别是我建议您查看TechNet和Configuring Catalogs页面上的部分(Cole的注释:您必须创建目录 - 在没有他们的情况下编写CONTAINS
个查询' t让你走得很远)然后查看Getting Started页面。如果你找不到任何和所有问题的答案,我会感到非常惊讶。
如果你仍然无法让它发挥作用,我会发布一个新问题,其中包含你的问题 - 你尝试过什么,你期待什么,以及发生了什么。
答案 1 :(得分:0)
我相信Lucene完全符合您的要求。您可以从任何外部数据源(包括多个数据库表)添加索引,然后查询该索引,您将获得指向匹配记录的指针。
缺点是,与全文索引不同,您自己负责构建和维护索引。
答案 2 :(得分:0)
对于这个确切的问题,似乎最简单/最快的解决方案是使用LIKE。