Как запустить запрос, чтобы найти строку в 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-запроса.