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", "黒"] # これが意図している順番