【问题标题】:How to run a query to find a string in blob files?如何运行查询以在 blob 文件中查找字符串?
【发布时间】:2013-11-03 00:53:02
【问题描述】:

Mediawiki 在数据库“文本”中有一个表格,其中包含页面内容。它被保存为 [BLOB] 文件。 我想运行一个查询来搜索网站上的所有文本,以查看哪些页面包含某个“字符串”。 如何运行查询来搜索 [blob] 文件?

【问题讨论】:

  • 如果我没记错的话,MediaWiki 可以压缩text 表的内容。你确定这不是你的情况吗?
  • 它在文档中说“old_flags”列可以包含一个 gzip 文件,但它也是一个 blob 文件,当我下载它时,我看不到 gzip 文件。我的 wiki 上有大量内容,我想搜索所有内容,但无法下载和解压缩每个页面。知道怎么做吗?

标签: mysql sql mediawiki


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 2021-02-24
      • 1970-01-01
      • 2021-08-08
      • 2020-01-22
      相关资源
      最近更新 更多