0

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

我获得了一个有时有结果的查询,但我没有得到它何时以及为什么返回结果。

这是我正在使用的查询:

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 名称或在内容中包含它的所有文件。

这是我的连接字符串:

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

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

4

1 回答 1

0

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

它来自这篇微软文章,其中详细介绍了如何使用完整的代码示例进行操作。Microsoft 还提供了一个搜索SDK,根据您的具体情况,它也可能会有所帮助,并且可能值得一试。

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

于 2015-08-07T15:14:13.150 回答