Microsoft Desktop Search – CONTAINS не возвращает результаты на сервере Windows 2008

Я пытаюсь найти удаленный файл-архив (запуск Windows Server 2008 R2) для файлов, содержащих некоторый текст. Если я попробую это, он отлично работает:

SELECT System.FileName FROM RemoteServer.SystemIndex WHERE SCOPE='file://RemoteServer/FileShare' 

и я получаю много результатов. Но как только я попытаюсь найти какой-то текст, я не получаю никаких результатов:

 SELECT System.FileName FROM RemoteServer.SystemIndex WHERE SCOPE='file://RemoteServer/FileShare' AND CONTAINS('a') 

если я попробую его на своей машине (Windows 7), он отлично работает:

 SELECT FileName FROM SystemIndex WHERE CONTAINS('a') 

Вот мой код c #, который я использую для поиска:

 string connectionString = "Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\""; using (OleDbConnection myOleDbConnection = new OleDbConnection(connectionString)) { myOleDbConnection.Open(); using (OleDbCommand myOleDbCommand = new OleDbCommand(sql, myOleDbConnection)) { using (myDataReader = myOleDbCommand.ExecuteReader()) { if (!myDataReader.HasRows) { System.Console.WriteLine("Query returned 0 rows!"); } else { // Process results here } } } } 

Я пробовал следующее:

  • Восстановленный индекс
  • Проверено, что папка «FileShare» добавлена ​​на сервер для индексирования
  • Отметьте вкладку «Типы файлов», чтобы были добавлены правильные расширения и что для этих расширений выбраны «Свойства индекса и содержимое файла»
  • Перезапуск службы индексирования
  • Перезагрузился сам сервер

но безрезультатно.

Любые другие предложения? Разочарование, так как я на 99%. Весь этот поиск на рабочем столе в Windows кажется довольно неподдерживаемым, может быть, я должен его использовать и использовать что-то еще?

    Попробуйте объявить переменную nvarchar для слова поиска

    DECLARE @SearchWord nvarchar (30) = 'a'

    Затем измените свой код на:

    SELECT имя_файла

    FROM SystemIndex

    ГДЕ СОДЕРЖИТ (@SearchWord)

    Этот отрывок из TechNet по CONTAINS См. TechNet

    * contains_search_condition * – nvarchar. Неявное преобразование происходит, когда в качестве входного сигнала используется другой тип символьных данных. В следующем примере переменная @SearchWord, которая определена как varchar (30), вызывает неявное преобразование в предикате CONTAINS.