Mediawiki在数据库'text'中有一个包含页面内容的表。它保存为[BLOB]文件。 我想运行一个查询来搜索网站上的所有文本,以查看哪些页面包含某个“字符串”。 如何运行查询来搜索[blob]文件?
答案 0 :(得分:9)
Mediawiki标记文本存储在old_text
字段中,该字段是 mediumblob 类型。您可以像任何其他基于文本的字段一样查询它。 MySQL会将您的字符串转换为二进制文件以进行查询。请注意,这是一个区分大小写的搜索!
select old_id from text where old_text like "%string%";
如果您需要不区分大小写,那么您需要对列进行适当的character set不区分大小写的排序规则:
SELECT old_id from text where CONVERT(old_text USING latin1) like '%STRing%';
请注意,如果您的表格不小,这些查询会花费很长时间。
答案 1 :(得分:0)
根据mediawiki documentation文本表,仅存储修订的文本。因此,要访问完整文本,需要处理与页面对应的所有修订。最好使用对mediawiki search engine的API调用并处理结果,而不是使用SQL查询进行搜索。