1

私は語彙の大規模なデータベース(〜2700エントリ)を持っています。各行には、英語の単語、日本語に相当する単語、およびこの問題に関係のないその他のデータが含まれています。結果を検索してテーブルに表示する機能を作成しましたが、ふりがなに小さな問題があります。

日本語の文章は、漢字(漢字)とふりがな(かな)を組み合わせて書かれています。誰もがすべての漢字を読むことができるわけではなく、同じ漢字に複数の読みがある場合もあります。そのような場合、光の仮名は漢字の上に配置されます-これはふりがなと呼ばれます:

ここに画像の説明を入力してください

これらの音声の読みを、次の形式で<ruby>タグを使用してユーザーに提示します。

<ruby>
  <rb>勉強</rb>    <!-- the kanji -->
  <rp>(&lt;/rp>      <!-- define where the phonetic part starts in the string -->
    <rt>べんきょう&lt;/rt>   <!-- the phonetic kana itself -->
  <rp>)&lt;/rp>      <!-- define the end of the phonetic part -->
</ruby>する        <!-- the last part is already phonetic so needs no ruby -->

文字列は次のようにデータベースに保存されます。

勉強(べんきょう)する

括弧の間にあるものは、直前の漢字の読みです。この方法で文字列を保存すると、rubyタグをサポートしていないブラウザ(驚くべきことにFirefoxなど)のフォールバックが可能になります。

これはすべて問題ありませんが、ユーザーが検索しているときに問題が発生します。彼らが検索した場合

勉強

その後、表示されます。しかし、彼らが検索しようとすると

勉強する

データベースの中央に音声の発音を定義する文字列があるため、機能しません。

上記の例の全幅の括弧は、この音声スクリプトを示すためにのみ使用されています。これを踏まえて、私は基本的にMySQL検索に丸括弧の間にあるものをすべて無視するように指示する方法を探しています。私はMySQLで最も単純なクエリを実行する方法についての基本的な知識を持っていますが、確かに専門家ではありません。私はドキュメントを見てきましたが、(少なくとも私にとっては)あまりユーザーフレンドリーではありません。おそらく、あまり初心者向けではありません。正規表現を使ったある種の構築で可能かもしれないと思いましたが、どうすればいいのかわかりません。

私がやりたいことをする方法はありますか?

4

2 に答える 2

1

MySQLで正規表現を置き換える方法で述べたように?、ユーザー定義関数なしでは不可能のようです(明示的なシーケンスのみを置き換えることができます)。

かなり汚い解決策:2つの連続する日本語の文字の間で何でも許容できますLIKE '勉%強%す%る'。私はそれを提案したことはありません。

または、ふりがな付きのバージョンを含む可能性のあるオプションのフィールドをテーブルに保持することもできます。

于 2012-05-27T01:11:12.830 に答える
1

LIKEクエリを使用しないことをお勧めします。これは、すべての文字の間に%が必要であり(ふりがながいつ発生するかわからないため)、誤検知が発生する可能性があるためです(津と強の間に有効な文字が表示された場合など)。 )。

@Jill-JênnVieが簡単に述べたように、ふりがなでテキストを保持するために新しい列を追加することをお勧めします。

私は韓国語のテキストを検索するアプリケーションに取り組んでいます。問題は、韓国語の活用が性格を変えることです。例えば:

하다 + 아요 = 해요

「하다」は辞書形式の動詞「todo」であり、「아요」は標準的な丁寧な活用形です。おそらくあなたは日本語を話す人なので、そのような礼儀正しい形がどれほど一般的であるかを知っています!하が해にどのように変化するかに注意してください。明らかに、ユーザーが文字列「해요」で「하다」を検索しようとしても、それは見つかりません。ただし、ユーザーがコーパス内の「하다」のすべてのインスタンスを表示したい場合は、それを返すことができる必要があります。

私たちのソリューションは、「form」(共役形式)と「analytic_string」の2つの列で、「해요」を「하다+아요」として表します。同様のアプローチを取り、ふりがななしで文を含む2番目の列を作成することができます。

このアプローチの主な欠点は、データベースのサイズが実質的に2倍になり、2つの列のデータが同じであるというデータを入力するときに特別な注意を払う必要があることです(データベースにフォームと分析文字列が含まれる行がいくつか見つかりました)それらに異なる単語があります)。ふりがなを無視して簡単にデータを検索できるのがメリットです。

これは、標準の「サイズとパフォーマンス」のトレードオフです。データベースのサイズと実行時間のどちらがより重要ですか?私が考えることができる他の解決策は、あまりにも多くの行を返し、それらを個別に分析することです。

于 2012-05-27T01:31:21.563 に答える