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.

7 ответов7

7

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

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

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

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

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

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

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

Windows Grep:

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

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

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

3

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

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, затем перейдите в Инструменты> Параметры папки и нажмите вкладку Поиск, отметьте опцию в кружке:

1

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

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

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

1

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

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

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

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

1

Возможно, вам повезет с ответами на windows-desktop-search-fail-to-search-inside-sql-files.

1

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

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

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

Способ № 1

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

Способ № 2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .