2011-12-21 179 views
1

我正在運行SQL Server 2008 R2開發人員版。全文搜索查詢不起作用

我已經跑了以下內容:

exec sp_fulltext_database 'enable' 

然後我創建了一個表,一個文件類型柱上,並用VARBINARY(MAX)的數據類型的FileContent列。然後,我右鍵單擊表並使用主鍵,文件類型列和FileContent列定義全文目錄。然後我上傳

// <summary> 
    /// Read the file into a byte array for full text search 
    /// </summary> 
    /// <param name="inputStream"></param> 
    /// <returns></returns> 
    private byte[] GetFile(Stream inputStream) 
    { 
     BinaryReader br = new BinaryReader(inputStream); 

     byte[] file = br.ReadBytes((int)inputStream.Length); 

     br.Close(); 
     inputStream.Close(); 

     return file; 
    } 

的文件被上傳到SQL Server的文件(使用C#這種輔助方法)和I可以在FileContent柱內看到的二進制數據。

我現在試圖查詢全文目錄:

SELECT * FROM Entities.Documents 
WHERE CONTAINS(FileContent, 'tablesorting') 

SELECT * FROM Entities.Documents 
WHERE CONTAINS(FileContent, 'Tablesorting') 

SELECT * FROM Entities.Documents 
WHERE FREETEXT(FileContent, 'tablesorting') 

SELECT * FROM Entities.Documents 
WHERE FREETEXT(FileContent, 'Tablesorting') 

這些都不返回任何數據,即使我上傳的(如Excel試算表2010年版)的文件包含單詞tablesorting。

有什麼建議嗎?由於

UPDATE

看來,SQL Server框中不能使用全文搜索與DOCX,XLSX等

這似乎令人難以置信考慮辦公室在2007年切換到這種格式,我使用SQL Server 2008 R2和新的文檔類型甚至沒有註冊。

微軟在這是最好的!

感謝您的貢獻。

+0

你如何寫入文件? – Hammerstein 2011-12-21 12:17:17

回答

3

您需要指示SQL Server使用安裝在OS中的文檔過濾器。此外,您需要將文檔的類型與二進制文件一起存儲,以便FT引擎使用正確的過濾器。看看this MSDN article