特殊文字を含む言語の全文検索をサポートするには、コンテンツ管理システムをハックする必要があります。これらは、htmlエンティティとしてデータベースに保存されます。箱から出して、CMSはそれをサポートしていません。バグはずっと前に報告されましたが、どうやら優先順位はありません。私はこのCMSに固執しており、顧客は私のソリューションを待っているので、それをハックする必要があります。くそ...
わかりました...CMSは、特殊文字をhtmlエンティティに変換することによってコンテンツを保存します(これは実際にはバンドルされたエディタによって行われます)。したがって、ドイツ語の「möchten」はDBで「möchten」になります。CMSは次のようなクエリ文字列を作成します
SELECT * FROM `SiteTree` WHERE MATCH( Content ) AGAINST (<SEARCH_STRING> IN BOOLEAN MODE);
テーブルのタイプはMyISAMで、フィールドにはFULLTEXTインデックスがあります。
検索文字列として「m&ouml; chten」を使用すると、MySQLはすべてのページに一致します。これは、&が検索文字列に存在する場合にクレイジーなことを行う演算子であるためです。検索は機能しません。
次のアイデアは、プレースホルダーとして特殊文字を*に置き換えることです。ただし、「m」で始まり、「chten」で終わる次の単語があるとすぐに、これはいくつかの単語にも一致します。理由はわかりませんが、アンパサンドのみをアスタリスクに置き換える(つまり、「m * ouml; chten」を検索する)と、同様の結果が得られます。
同じ問題がここで説明されました。
さて、皆さん、私はあなたの助けが必要です!何か案は?
編集:コンテンツをUTF-8に変換するオプションはありません。
ありがとう!
craesh