[groonga-dev,00779] 文字列カラムのソート順が日本語が先になる

アーカイブの一覧に戻る

Shinya Kawaji kawaj****@gmail*****
2012年 4月 17日 (火) 21:58:03 JST


川路と言います。

groonga(正確には rroonga と ActiveGroonga)を、
しばらく前から愛用させていただいています。

基本的なことかもしれないのですが、すぐにはちょっと分からなかった事が
あるので、教えていただけますでしょうか。


文字列型カラム(text/short_text)をソート順に使った場合、一般的な
文字コード順である「記号」「数字」「英字」「日本語」になることを
期待していたのですが、実際は「日本語」が先になって、他が後になります。

これを、「日本語が先になる」ようにするにはどのような方法が有りますでしょ
うか。

それと出来れば、現時点での「日本語が先になる理由(仕組み)」を知りたいの
ですが、どのように理解すればよいでしょうか。

よろしくお願いします。


【環境】
groonga 2.0.1 [linux-gnu,x86_64,utf8,match-escalation-threshold=0,nfkc,mecab,epoll]
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]
rroonga-2.0.2
activegroonga-1.0.7

【再現方法】
irb -r groonga

Groonga::Context.default_options = {:encoding => :utf8}
Groonga::Database.create(:path => "/tmp/example.db")
Groonga::Schema.create_table("Items", :type => :hash, :key_type => "Int32"){|t| t.text("title") }
items = Groonga["Items"]
items.add(1, {:title => "(社)"})
items.add(2, {:title => "222"})
items.add(3, {:title => "cs"})
items.add(4, {:title => "黒"})

items.sort(%w[title]).collect(&:title)
# => ["黒", "(社)", "222", "cs"]
# 日本語が先になっている

items.sort(%w[title]).collect(&:title).sort
# => ["(社)", "222", "cs", "黒"]
# これが意図している順番




groonga-dev メーリングリストの案内
アーカイブの一覧に戻る