Windows Search не индексирует содержимое текстовых файлов с расширением .SQL

10

У меня проблемы с поиском Windows для индексации содержимого текстового файла с .sqlрасширением. Я что-то не так делаю?

Задний план:

На работе я использую программу под названием Navicat, которая помогает мне работать с нашей базой данных MySQL. Когда я использую Navicat для редактирования и сохранения запросов, он сохраняет их в .sqlфайлах, которые находятся в каталоге Navicat в Program Files.

Поскольку Windows Search по умолчанию не индексирует файлы в Program Files, я добавил их в список проиндексированных мест, как показано на рисунке ниже:

введите описание изображения здесь

Я также пошел в расширенный раздел и добавил .sqlрасширение файла и выбрал Index Properties and File Contentsопцию. Это устанавливает описание фильтра следующим образом Plain Text Filter:

введите описание изображения здесь

Однако всякий раз, когда я выполняю поиск текста, который я ожидаю найти в .sqlфайле, например saw_order.Wo type:sql, он не возвращает никаких файлов. Поиск является успешным , если я не буду в поисках части имени файла, но никогда его содержимое .sqlфайлов.

Эти .sqlфайлы являются текстовыми файлами , которые могут быть легко открывать и редактировать с помощью блокнота. Navicat просто добавляет некоторые функции intellisense и организации, но кроме этого это простой текст.

Почему Windows Search не видит содержимое этих файлов?

Нужно ли добавить какой-то специальный плагин в Windows для поиска, чтобы он распознавал эти файлы?

ПРИМЕЧАНИЕ. Я использую Windows Search 4.0 и Windows XP SP3.

Бен МакКормак
источник
См. Также superuser.com/questions/77772/…
RJFalconer

Ответы:

7

Кажется, есть проблема с поиском Windows, читающим формат файла, даже если он задан в виде обычного текста. Это известная проблема, и даже она поднималась здесь на Superuser !

Моя лучшая рекомендация на данный момент - использовать программу, которая может искать содержимое файлов. Это может быть не так быстро, как их проиндексировать, но, надеюсь, это может сделать работу за вас.

Четыре замечательных инструмента, которые я рекомендую:

Агент Ransack (бесплатная):

альтернативный текст

NirSoft SearchMyFiles (бесплатное и портативное):

альтернативный текст

Windows Grep :

альтернативный текст

Портативный поиск файлов (бесплатное программное обеспечение):

альтернативный текст

Джон Т
источник
Спасибо за предложения. Я бы действительно предпочел интегрированное решение, которое исправляет Windows Desktop Search, но, возможно, я посмотрю на некоторые программы, которые вы рекомендовали.
Бен МакКормак
Хотя я бы предпочел просто исправить поиск Windows Desktop, я действительно ценю время, которое вы уделяете подробному ответу. Мне придется проверить некоторые из этих инструментов. Большое спасибо!
Бен МакКормак
Добро пожаловать!
Джон Т
4

Убедитесь, что в вашем реестре находятся следующие ключи:

Computer\HKEY_CLASSES_ROOT\.sql

[HKEY_CLASSES_ROOT\.sql]
"Content Type"="text/plain"
"PerceivedType"="text"

[HKEY_CLASSES_ROOT\.sql\PersistentHandler]
@="{5E941D80-BF96-11CD-B579-08002B30BFEB}"

Затем переиндексация.

Джон Г Тесмер
источник
2

В случае, если есть проблема с самой индексацией, я бы попытался настроить поиск, чтобы просмотреть содержимое неиндексированных файлов.

Перейдите в любое окно Проводника и нажмите, Altзатем перейдите в Инструменты> Параметры папки и выберите вкладку Поиск, отметьте опцию в кружке:

введите описание изображения здесь

Уильям Хилсум
источник
Я не верю, что эти параметры можно просматривать таким образом в Windows XP (если только они не были отключены на моем компьютере групповой политикой, но я сомневаюсь в этом).
Бен МакКормак
1

Многим поисковым системам нужен какой-то модуль, часто называемый «соединителем», чтобы понять, как интерпретировать файл.

Отмечу, что на скриншоте файл SQL указан как «Простой текст». Несмотря на то, что файл представляет собой простой текст, Windows Search может ожидать, что файл .sql будет отличаться от текста, и просто игнорирует его.

Чтобы проверить гипотезу, сделайте копию файла, измените расширение на «.txt», а затем принудительно выполните переиндексацию.

Что-то еще, чтобы проверить, возможно, с более мощным текстовым редактором (мой любимый gVim - http://www.vim.org/download.php#pc ), чтобы увидеть, отличается ли первоначальное «магическое число» файла от обычный текстовый файл.

pcapademic
источник
Я считаю, что SharePoint использует то, что называется iFilter, и WDS может использовать то же самое, хотя я не уверен. Я попробовал gVim по вашей рекомендации. Из того, что я мог сказать, ничто не казалось отличным в файлах .sql и файлах .txt. Тем не менее, я, возможно, не смотрел на что-то правильно.
Бен МакКормак
Бен МакКормак, ты попробовал эксперимент, который я предложил?
pcapademic
1

В статье Windows XP Search Bug говорится:

Windows XP не выполняет поиск во всех файлах, чтобы повысить производительность поиска и избежать посторонних результатов. Это происходит независимо от того, используете ли вы службу индексирования при поиске. Поэтому в Windows XP есть известная проблема, связанная с тем, что не удается найти несколько типов файлов, когда вы выполняете поиск файлов, «содержащий текст», или используете опцию «Слово или фраза в файле».

Это можно исправить для многих типов файлов, но не для всех. Причиной является отсутствие значения PersistentHandler в реестре для этого типа файла.

Способ № 1

Загрузите этот скрипт VB (написанный Дугом Ноксом ). Сохраните файл, который вы только что загрузили, на свой жесткий диск. Найдите файл, который вы только что сохранили и дважды щелкните по нему. Введите расширение файла, которое вы хотите изменить. Если подраздел «PersistentHandler» существует, изменения не будут внесены. Если он не существует для данного типа файлов, реестр будет обновлен соответствующим образом. Перезагрузитесь, когда вы закончите с типами файлов, которые вы хотите изменить.

Способ № 2

MS KB 309173 имеет еще одно исправление для этой ошибки. Чтобы настроить Windows XP для поиска во всех файлах независимо от типа файла, получите последний пакет обновления для Windows XP (в настоящее время SP2), а затем включите параметр «Индексные типы файлов с неизвестными расширениями».

Если вы используете этот метод, Windows XP ищет указанный вами текст всех типов файлов.

Это может повлиять на производительность функции поиска. Для этого см. Инструкции в статье выше .

harrymc
источник
Я ценю вашу ссылку на статью, но ни один из методов, похоже, не работает. Я запустил скрипт VB, и ключ уже существовал. Я изменил значение реестра в соответствии с предложением в методе № 2, а затем переиндексировал мои папки, и он все еще не работает. Возможно, вы имеете в виду «Поиск Windows» вместо «Windows Desktop Search», который был разработан для Vista, но выпущен и для XP до выпуска Vista.
Бен МакКормак
Я считаю, что ссылки, которые я дал, по сути правильные, в том смысле, что PersistentHandler для расширения .sql неверен и нуждается в замене. Тем не менее, требуется гораздо больше исследований, чтобы закрепить его.
harrymc
1

Я могу думать только о двух вещах:

  1. Сами файлы еще не были проиндексированы (поэтому они отображаются в бите поиска имени файла, а не в поиске контента)

  2. Я также предлагаю проверить ... попробуйте поместить некоторые файлы SQL вне папки Program Files и включить эту папку в список проиндексированных расположений. Может быть, есть проблема с разрешениями на папки в Program Files?

босой
источник
Спасибо за предложения. Файл существует уже давно, так же как и Windows Search на моем ПК. Я собираюсь перестроить весь индекс и посмотреть, поможет ли это.
Бен Маккормак
Это не сработало: /. Индексирование завершено, и он все еще не находит совпадений.
Бен Маккормак