我正在查找使用Windows搜索獲取全文搜索結果的代碼(它應該可用於Vista,默認情況下爲7和8)。Windows搜索 - c中的全文搜索#
我在這裏發現了一些問題和msdn上的一些文本,但沒有一個具有可用的確切代碼。我已經嘗試使用Windows API代碼包(因爲它被稱爲Windows搜索的接口之一),但它僅返回文件名稱的結果,而不是全文。
我正在查找使用Windows搜索獲取全文搜索結果的代碼(它應該可用於Vista,默認情況下爲7和8)。Windows搜索 - c中的全文搜索#
我在這裏發現了一些問題和msdn上的一些文本,但沒有一個具有可用的確切代碼。我已經嘗試使用Windows API代碼包(因爲它被稱爲Windows搜索的接口之一),但它僅返回文件名稱的結果,而不是全文。
這裏是不工作的代碼 - 例如,在我做了搜索桌面文件夾中的「僞」字:
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();
在桌面模式下適用於Windows 8.1 – slayernoah
如果您想查找單詞的一部分,這對我無效。例如:如果文檔包含「dummy」,並且我使用上面的代碼搜索「dum」。任何想法如何在這裏使用通配符?只是添加一個'*'似乎不起作用。 – slayernoah
@slayernoah您是否嘗試過*進行搜索?不是解決方案 – Kiquenet
看看在DSearch例子。 Windows Search Code Samples
這就是你想要的。
謝謝,我已經找到了解決方案。這是我需要的頁面之一,但它遠遠不夠(這個sql示例沒有解釋Windows搜索的可用sql語法,這對於我和我提到的問題是必需的)。你有完整的代碼在我上面的答案中工作。 –
MS樣本下載鏈接脫機:) – zozzancs
「FullText」是什麼意思? – Shaharyar
全文表示Windows搜索將搜索文檔文件(如.txt,.doc,.docx,.pdf)的文本(內容),而不僅僅是文件名或其屬性。如果您使用Windows資源管理器進行搜索,則可能,所以應該可以。 –