2009-10-08 130 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