Как запустить запрос, чтобы найти строку в blob-файлах?
Mediawiki имеет таблицу в базе данных "текст", которая содержит содержимое страницы. Он сохраняется как файл [BLOB]. Я бы хотел, чтобы выполнить запрос для поиска по всему тексту на сайте, чтобы увидеть страницы, которые содержат определенную строку. Как запустить запрос для поиска файлов [blob]?
2 ответов
текст разметки Mediawiki хранится в old_text
поле, которое является mediumblob тип. Вы можете запросить его, как и любое другое текстовое поле. MySQL приведет вашу строку в двоичный файл для запроса. Обратите внимание, что это поиск с учетом регистра!
select old_id from text where old_text like "%string%";
Если вам нужна нечувствительность к регистру, вам нужно применить соответствующий набор символов С нечувствительной к регистру сортировкой по столбцу:
SELECT old_id from text where CONVERT(old_text USING latin1) like '%STRing%';
имейте в виду, что если ваша таблица не мало эти запросы займут много времени.
на документация mediawiki текстовая таблица хранит только текст для редакции. Следовательно, для доступа к полному тексту необходимо обработать все изменения, соответствующие странице. Лучше использовать вызов API поисковая система mediawiki и обрабатывать результаты, чем поиск с помощью SQL-запроса.