2009-10-08 133 views
0

假设我有两个数据库,一个用于生产目的,另一个用于开发目的。sql server - 全文搜索

当我们复制开发数据库时,全文目录没有被正确复制,所以我们决定自己创建目录。我们匹配所有的表和索引,并创建了数据库,搜索功能似乎也可以正常工作(但已经完全测试)。

但是,前目录在其文件夹中的文件比手动创建的文件多得多。那很好吗?我认为他们将有相同数量的文件(但大小可能会有所不同)

+0

它是哪个版本的SQL Server? – MaxiWheat 2009-10-08 00:15:18

+0

它是SQL Server 2005. – TPR 2009-10-08 05:43:34

回答

0

第一个 ...当使用全文搜索时,我建议您不要手动尝试创建向导为您做的工作。我不得不怀疑是否缺少更多的数据。为什么不重新创建索引?

第二个 ...我建议你不要使用sql server的freetext功能,除非你没有别的选择。我曾经是自由文本的忠实信徒,但是显示了创建Lucene(.net)索引并搜索它的例子,与在SQL Server中创建索引并搜索它相比。与创建Lucene索引相比,创建SQL Server索引要慢很多,难于维护。与Lucene相比,搜索SQL Server索引的准确性要差得多(结果很差)。 Lucene就像拥有自己的个人Google来搜索数据。

如何?在Lucene中索引您的数据(只有您需要搜索的数据)并包含您正在建立索引以供日后使用的数据的主键。然后使用您的语言和Lucene(.net)API(关于此主题编写的许多文章)搜索索引。在你的搜索结果中,确保你返回PK。一旦你确定了你感兴趣的记录,你就可以根据返回的PK得到其余的数据和/或任何相关的数据。

Gotchas?更新索引也更快更简单。但是,您必须自行创建索引,更新索引并搜索索引。 SUPER EASY做...但仍然...在这里没有巫师或单手编码!另外,索引位于文件系统上。如果文件处于打开状态并正在搜索,并且您尝试再次打开该文件以进行其他搜索,您显然会遇到一些问题...因此,需要编写一些基础结构的基础结构以便阅读这些索引。

这对SQL Server有什么帮助?您可以轻松地将您的Lucene搜索封装在CLR函数或proc中,这些函数或程序可以安装在数据库中,然后您可以使用它,就好像它是本地到您的t-SQL查询一样。

+0

不,通过手动我并不是说我绕过了向导步骤。我的意思是我必须自己挑选所有的表格和它们的索引等,这就是所有:) ...而不是用数据库复制目录 – TPR 2009-10-08 04:07:47