【问题标题】:Windows search query for a *part* of a word/substring in file contentsWindows 搜索查询文件内容中单词/子字符串的 *part*
【发布时间】:2016-05-11 22:12:34
【问题描述】:

我正在尝试使用 Windows Search SQL Syntax 以编程方式查询 Windows 搜索索引

我可以使用以下搜索查询在我的 C# winforms 应用程序中搜索文件内容

string strSearchQuery =
    "SELECT System.ItemName FROM SystemIndex " +
    "WHERE scope ='file:" + @"C:\myfolder\" + 
    "' and FREETEXT('dummy')";

问题:但是,我无法使用此查询在文件内容中搜索单词的一部分。 p>

例如:如果一个文件(例如 .txt 文件)包含文本“abcd”,我搜索 FREETEXT('ab'),它不会显示该文件。

我尝试过使用:

  • FREETEXT('ab')
  • FREETEXT('*ab*')
  • FREETEXT('\"ab\"')
  • FREETEXT('\"*ab*\"')
  • FREETEXT('*\"ab\"*')
  • FREETEXT('ab*')
  • FREETEXT('\"*ab*\"')
  • FREETEXT('\"ab\"*')

我也尝试过将CONTAINS 与上述组合一起使用,而不是FREETEXT

当我直接在 Windows 搜索中搜索 ab 时,它会显示包含文本的文件

如何修改此查询以在文件内容中搜索单词的一部分?请帮忙!

【问题讨论】:

    标签: c# sql search oledb windows-search


    【解决方案1】:

    FREETEXT() 不支持通配符。请改用 CONTAINS()。

    string query = 
       "SELECT System.ItemName, System.ItemUrl FROM SystemIndex " +
       "WHERE scope ='file:D:\MyFolder' and CONTAINS('\"dumm*\"')";
    

    请注意,您要搜索的部分单词必须包含在双引号中,以及通配符 * 字符。

    【讨论】:

      【解决方案2】:

      通配符是%,所以你的查询应该是这样的:

      string strSearchQuery =
          "SELECT System.ItemName FROM SystemIndex " +
          "WHERE scope ='file:" + @"C:\myfolder\" + 
          "' and FREETEXT(%'dummy'%)";
      

      编辑:

       string strSearchQuery =
              "SELECT System.ItemName FROM SystemIndex " +
              "WHERE scope ='file:" + @"C:\myfolder\" + 
              "' and FREETEXT('%dummy%')";
      

      【讨论】:

      • 当我使用FREETEXT(%'dummy'%) 时,我得到一个System.Data.OleDb.OleDbException
      • 看看我的编辑,现在应该可以了。我放错了 % 和 ' 的顺序
      • 按该顺序使用它 - FREETEXT('%dummy%') - 不会为部分单词返回任何结果:(
      • 您的 c:\myfolder\ 位置是否有名为 dummy 的文件?
      • 是的。我确实有一个 txt 文件,其中包含该文件夹中的文本 aaadummyaaa。如果我直接使用 Windows 资源管理器进行搜索,对于 dummy 它会显示此文件
      【解决方案3】:

      有一个 COP_VALUE_CONTAINS 运算符。 SQL 符号是 ~= 或 ~~。 例如。 System.FullText :~="abc"。

      【讨论】:

        猜你喜欢
        • 2013-06-22
        • 1970-01-01
        • 2011-08-23
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        • 1970-01-01
        • 2018-01-08
        • 2014-01-07
        相关资源
        最近更新 更多