質問

特殊文字を含む言語のフルテキスト検索をサポートするには、コンテンツ管理システムをハッキングする必要があります。これらは、HTMLエンティティとしてデータベースに保存されます。箱から出して、CMSはそれをサポートしていません。バグはずっと前に報告されていましたが、明らかに優先されません。私はこのCMSに固執しています、顧客は私のソリューションを待っているので、私はそれをハッキングしなければなりません。くそ...

OK ... CMSは、特殊文字をHTMLエンティティに変換することでコンテンツを保存します(これは実際にバンドルされたエディターによって行われます)。したがって、ドイツ語の「Möchten」という言葉は、DBで「Möchten」を取得します。 CMSは、次のようなクエリ文字列を作成します

SELECT * FROM `SiteTree` WHERE MATCH( Content ) AGAINST (<SEARCH_STRING> IN BOOLEAN MODE);

テーブルはタイプmyisamで、フィールドにはフルテキストインデックスがあります。

「möchten」を検索文字列として使用する場合、mySQLはすべてのページと一致します。検索は機能しません。

次のアイデアは、特別なキャラクターをプレースホルダーとして *に置き換えることです。しかし、これはいくつかの単語と一致します。「M」から始まるものと「Chten」で終わる別の次の言葉ができるようになります。理由はわかりませんが、アンパサンドのみをアスタリスクに置き換えると(「m*ouml; chten」を検索することも)同様の結果につながります。

同じ問題について説明しました ここ.

わかりました、皆さん、私はあなたの助けが必要です!何か案は?

編集: コンテンツをUTF-8に変換することはオプションではありません。

ありがとう!
クレシュ

役に立ちましたか?

解決

なぜHTMLエンティティを使用しているのですか? UTF8に切り替えるだけです。

それ以外の場合は、検索文字列をもう一度引用してみてください( '"search"')。残念ながらうまくいきません - http://bugs.mysql.com/bug.php?id=26265 長いぶら下がっているバグがあります。唯一のアプローチは次のとおりです。

最後のアプローチは、すべてのアクセントが交換された状態で、検索目的のためだけに追加の列を保存することです。

他のヒント

フルテキスト検索エンジンを使用できます。 Apache Lucene 強力ですが、学ぶのは少し難しいです。 Apache solr 学習がはるかに簡単で、非常に便利です。 スフィンクス MySQLとの簡単な統合で知られています。私は彼ら全員が国際化をうまく処理すると信じています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top