Windows搜索查询c#

本文关键字:查询 搜索 Windows | 更新日期: 2023-09-27 18:07:04

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

我实现了获得一个查询,有时有结果,但我不知道何时以及为什么返回结果。

这是我正在使用的查询:

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);
谁能告诉我我的查询有什么问题?

Windows搜索查询c#

你可以在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);
    }
}

来自微软的一篇文章,该文章用完整的代码示例详细介绍了如何做到这一点。微软还提供了一个搜索SDK,它也可以根据你的具体情况提供帮助,可能值得一试。

编辑:这是一个很好的博客做它在sql风格像你,你似乎是对的。他确实提到了如何将文件放入索引以显示它们,因此可能值得检查。