代码之家  ›  专栏  ›  技术社区  ›  Catdirt

正在尝试排除msidxs sql select语句中的vti*路径

  •  0
  • Catdirt  · 技术社区  · 16 年前

    使用C ASP.NET页,构建要针对索引服务器目录运行的SQL查询字符串:

    string SQL = "SELECT doctitle, vpath, Path, Write, Size, Rank ";
        SQL += "FROM \"" + strCatalog + "\"..SCOPE() ";
        SQL += "WHERE";
        SQL += " CONTAINS(Contents, '" + strQP + "') ";
        SQL += "AND NOT CONTAINS(Path, '\"_vti_\"') ";
        SQL += "AND NOT CONTAINS(FileName, '\".ascx\" OR \".config\" OR \".css\"') ";
        SQL += "ORDER BY Rank DESC"; 
    

    似乎工作正常,但它会返回结果 _vti_ 我想要避免的目录。

    编辑:除了被问到的问题以外,所有问题都是技术性的:我如何搜索索引,使它不从vti文件夹返回文件?切换到使用IXSO查询对象是可能的,但对于这个特定的实例,我宁愿避免使用它。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Catdirt    16 年前

    好的,我放弃了上面的代码,切换到一个like-vs-contains子句。

    SQL += "AND NOT CONTAINS(Path, '\"_vti_\"');
    

    替换为:

    SQL += " AND Path NOT LIKE '%vti%' ";
    

    似乎已经成功了。在这个上下文中,contains的优点是它将搜索所有索引字段(如下一行中所示),但是由于我只是删除目录,所以搜索路径变量似乎是合适的。我也可以毫不费劲地补充:

    SQL += " Path NOT LIKE '%vti%' AND Path NOT LIKE '%icons%' ";
    

    所以在理论上,我可以建立一个快速过滤的点击,以排除似乎容易。我只希望有更多关于msidx的文档。Blah。

    推荐文章