私のウィキ (MediaWiki 1.19.4) にこれらのページ タイトルがあるとしましょう:
SOMETHIng
Sómethìng
SomêthÏng
SÒmetHínG
ユーザーが検索した場合、something
4 ページすべてが結果として返されるようにしたいと考えています。
現時点で考えられるのは、次のクエリ (MySQL Percona 5.5.30-30.2) だけです。
SELECT page_title
FROM page
WHERE page_title LIKE '%something%' COLLATE utf8_general_ci
を返すだけSOMETHIng
です。
ORを検索すると結果が得sóméthíng
SÓMÉTHÍNG
SOMETHIng
られるため、正しい道を進んでいる必要があります。クエリを変更して、他の結果を期待どおりに取得するにはどうすればよいですか? page
テーブルには最大 2,000 行しか含まれていないため、ここではパフォーマンスは重要ではありません。
これは、関連するビットを含むテーブル定義です。
CREATE TABLE page (
(...)
page_title VARCHAR(255) NOT NULL DEFAULT '' COLLATE latin1_bin,
(...)
UNIQUE INDEX name_title (page_namespace, page_title),
)
これはMediaWikiのストックインストールであり、そのコードはこのフィールドがそのように定義されていることを期待しているため(つまり、バイナリデータとして格納されたユニコード)、テーブル定義を変更してはなりません。