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フィールドに格納されます。他のテキストベースのフィールドと同じようにクエリを実行できます。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 のドキュメントに従って、テキスト テーブルにはリビジョンのテキストのみが格納されます。したがって、完全なテキストにアクセスするには、ページに対応するすべてのリビジョンを処理する必要があります。MediaWiki 検索エンジンへの API 呼び出しを使用して結果を処理する方が、SQL クエリを使用して検索するよりも優れています。

于 2016-03-22T09:17:49.660 に答える