1

英語の最初の文字で始まるすべての単語をクエリするのは簡単です。たとえば、「a」で始まるすべての単語をクエリするには、次のクエリを実行します。

SELECT * FROM table WHERE word LIKE 'a%'; 

「an」、「at」、「after」などの結果が得られます。

しかし、韓国語では同じではありません。韓国語の単語は 1 つの Unicode 文字と見なされるため、次のクエリは次のようになります。

SELECT * FROM table WHERE word LIKE 'ㄱ%'; 

"가"、"고"、"간" などの単語は返されません (結果は "ㄱ자"、"ㄱ견" のようになります...)

では、期待どおりの結果を得るにはどうすればよいでしょうか。(つまり、「ㄱ」で始まる単語をクエリしたい場合、「가」、「고」、「간」などの単語を取得します)

どうもありがとうございました!

4

1 に答える 1

0

ここでの問題は、ユニコード形式と、子音と母音を組み合わせて新しい文字を作成する韓国語の独特の動作の 1 つです。これらの新しい文字は、個々のグリフとして、または組み合わせたグリフとして保存できます。このように検索したい場合は、それらを個別のグリフとして保存する必要があります。つまり、データベースに格納されるすべての受信文字列を取得し、それらを挿入する前に処理し、複合グリフをそのコンポーネントに分割します。また、既存のデータベースがある場合は、既存のデータに対してもそれを行う必要があります。

もう 1 つのルートは、Unicode の複雑な表現を使用して、その文字とグリフの可能なすべての組み合わせのリストを作成し、膨大な数の OR でそれらすべてを検索することです。

どちらにしても首が痛いです。アジアの言語はプログラマーにとって大きな問題になる可能性があります。これらの言語にはすべて、処理を困難にするような些細なことがあるようです。

于 2013-03-25T06:49:10.883 に答える