9

Mediawiki has a table in the database 'text' which contains the page content. It is saved as a [BLOB] file. I would like to run a query to search through all the text on the site to see which pages contain a certain 'string'. How do I run a query to search [blob] files?

4

2 回答 2

10

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%';

请注意,如果您的表不小,这些查询将需要很长时间。

于 2013-11-08T20:31:13.673 回答
0

根据mediawiki 文档文本表,仅存储修订的文本。因此,要访问完整的文本,需要处理与页面对应的所有修订。最好使用 API 调用mediawiki 搜索引擎并处理结果,而不是使用 SQL 查询进行搜索。

于 2016-03-22T09:17:49.660 回答