Поиск имен файлов в таблице базы данных MySQL ограничен типом файла?

0

У меня есть база данных MySQL, которую я реплицирую с другого сервера. База данных содержит таблицу с этими столбцами

ID, FileName и FileSize

В таблице содержится более 4'000'000 записей. Я хочу быстро выполнить поиск в столбце FileName (varchar)

Я обнаружил, что могу использовать эту поисковую систему Sphinx. Проблема в том, что я хочу ограничить поиск по типу файлов. Должен ли я и как (триггеры?) Извлекать расширения файлов для всех строк? Может быть, мне нужно создать другую таблицу (потому что она реплицирована) и присоединиться к ней в соотношении 1:1?

Можете ли вы дать мне несколько советов:)

Теги:
search
replication
full-text-search
sphinx

2 ответа

0

Вы обязательно захотите разделить тип файла на отдельный столбец - это позволит вам направить поиск Sphinx на этот термин (с режимом совпадения с расширенным):

normal query terms @filetype jpg

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

-2

Почему бы не использовать SQL-запрос с Regex?

Сделайте что-то вроде...

.$query.\.$extension

Это приведет к тому, что подстановочный знак будет соответствовать поисковому термину в имени файла, затем периоде, затем расширению.

  • 0
    Я думаю, что этот вид поиска не очень хорошо оптимизирован (из того, что я знаю об индексах) Другая причина заключается в том, что мне может понадобиться сделать некоторые преобразования имени файла, например, разделить «MyPicture.jpg» на столбец «Моя картинка» (с пробел) и столбец "jpg" (тип файла)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню