Попытка исключить пути VTI * в операторе MSIDXS sql select - PullRequest
0 голосов
/ 05 апреля 2010

с использованием страницы 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? Переключение на использование объекта запроса ixsso возможно, но я бы предпочел избегать его для этого конкретного экземпляра.

1 Ответ

1 голос
/ 06 апреля 2010

Хорошо, я отказался от приведенного выше кода, сработало переключение на предложение LIKE vs CONTAINS.

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

заменено на:

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

Кажется, сделал трюк. Преимущество CONTAINS в этом контексте состоит в том, что он будет искать все проиндексированные поля (как в следующей строке), но, поскольку я просто отсеиваю каталоги, кажется, что поиск переменной Path подходит. Я также смог добавить к нему без проблем:

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

Так что теоретически я могу создать быстрый фильтр попаданий, чтобы исключить, казалось бы, простоту. Хотелось бы, чтобы было больше документации по MSIDXS. Мля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...