Поиск имен файлов в таблице базы данных MySQL ограничен типом файла? - PullRequest
0 голосов
/ 05 декабря 2009

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

ID, FileName и FileSize

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

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

Не могли бы вы дать мне несколько советов, пожалуйста:)

Ответы [ 2 ]

0 голосов
/ 07 декабря 2009

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

normal query terms @filetype jpg

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

0 голосов
/ 05 декабря 2009

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

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

.$query.\.$extension

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

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