2013-06-30 196 views
18

我正在查找使用Windows搜索獲取全文搜索結果的代碼(它應該可用於Vista,默認情況下爲7和8)。Windows搜索 - c中的全文搜索#

我在這裏發現了一些問題和msdn上的一些文本,但沒有一個具有可用的確切代碼。我已經嘗試使用Windows API代碼包(因爲它被稱爲Windows搜索的接口之一),但它僅返回文件名稱的結果,而不是全文。

+0

「FullText」是什麼意思? – Shaharyar

+1

全文表示Windows搜索將搜索文檔文件(如.txt,.doc,.docx,.pdf)的文本(內容),而不僅僅是文件名或其屬性。如果您使用Windows資源管理器進行搜索,則可能,所以應該可以。 –

回答

27

這裏是不工作的代碼 - 例如,在我做了搜索桌面文件夾中的「僞」字:

string connectionString = "Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\""; 
OleDbConnection connection = new OleDbConnection(connectionString); 

string query = @"SELECT System.ItemName FROM SystemIndex " + 
    @"WHERE scope ='file:" + System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "' and FREETEXT('dummy')"; 
OleDbCommand command = new OleDbCommand(query, connection); 
connection.Open(); 

List<string> result = new List<string>(); 

OleDbDataReader reader = command.ExecuteReader(); 
while (reader.Read()) 
{ 
    result.Add(reader.GetString(0)); 
} 

connection.Close(); 
+1

在桌面模式下適用於Windows 8.1 – slayernoah

+0

如果您想查找單詞的一部分,這對我無效。例如:如果文檔包含「dummy」,並且我使用上面的代碼搜索「dum」。任何想法如何在這裏使用通配符?只是添加一個'*'似乎不起作用。 – slayernoah

+0

@slayernoah您是否嘗試過*進行搜索?不是解決方案 – Kiquenet

1

看看在DSearch例子。 Windows Search Code Samples

這就是你想要的。

+0

謝謝,我已經找到了解決方案。這是我需要的頁面之一,但它遠遠不夠(這個sql示例沒有解釋Windows搜索的可用sql語法,這對於我和我提到的問題是必需的)。你有完整的代碼在我上面的答案中工作。 –

+2

MS樣本下載鏈接脫機:) – zozzancs