Windows 搜索查询 c#

Windows Search query c#

我正在尝试搜索包含短语或其名称包含短语的文件。

我得到了一个有时有结果的查询,但我不知道返回结果的时间和原因。

这是我正在使用的查询:

SELECT TOP 5 System.ItemPathDisplay 
FROM SystemIndex 
WHERE scope ='file:' 
    AND (FREETEXT('MYPHRASE') 
    OR Contains(System.FileName,'MYPHRASE'))
    AND (Contains(System.ItemType,'.txt') 
    OR Contains(System.ItemType,'.docx') 
    OR Contains(System.ItemType,'.pptx') 
    OR Contains(System.ItemType,'.xlsx') 
    OR Contains(System.ItemType,'.pdf'))

我只想获取所有包含 MYPHRASE 名称或内容中包含它的文件。

这是我的 oleconnectionstring:

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

谁能告诉我我的查询有什么问题?

您可以在 C# 代码中进行递归搜索,例如

    void DirSearch(string MYPHRASE) 
{
    try 
    {
       foreach (string d in Directory.GetDirectories(MYPHRASE)) 
       {
        foreach (string f in Directory.GetFiles(d, txtFile.Text)) 
        {
           lstFilesFound.Items.Add(f);
        }
        DirSearch(d);
       }
    }
    catch (System.Exception excpt) 
    {
        Console.WriteLine(excpt.Message);
    }
}

来自 this microsoft article which goes into good detail about how to do it with a full code example. Microsoft also offers a search SDK 根据您的具体情况,它也可能有所帮助,可能值得一试。

编辑:Here 是一个不错的博客,它像您一样以 sql 的风格来做这件事,而且您似乎说的很对。他确实提到了您可能必须如何将文件放入索引才能显示,因此可能值得一试。