Kouhei Sutou
kou****@clear*****
2014年 5月 22日 (木) 11:44:36 JST
須藤です。 In <CANM+HheYbUTP=kJ8G2hv=QazmVODgzx3J6b4Cata-XRd=BS4gA****@mail*****> "[groonga-dev,02332] Groongaのスニペットのタグ上限値512個について" on Thu, 22 May 2014 09:23:55 +0900, Naoya Murakami <visio****@gmail*****> wrote: > ただ、現状、困っていませんし、そもそも、スニペット(断片)という > ぐらいなのだから、大きな文書全体に対して、スニペット関数を使う > こと自体、筋違いなのかもしれません。 > ハイライトさせることだけが目的なので、アプリ側で対応するのが > 筋なんですかね。 なるほど! スニペットとは別にハイライトするAPIがあるとよさそうな気がし ました! RroongaにはPatriciaTrie#tag_keysというAPIがあって、それ相当 の機能を提供するとよいのかなぁと思いました。 http://www.rdoc.info/github/ranguba/rroonga/Groonga/PatriciaTrie:tag_keys -- require "groonga" require "erb" include ERB::Util Groonga::Context.default_options = {:encoding => "utf-8"} Groonga::Database.create words = Groonga::PatriciaTrie.create(:key_type => "ShortText", :key_normalize => true) words.add('ガッ') words.add('MUTEKI') text = 'muTEki マッチしない <> ガッ' other_text_handler = Proc.new do |string| h(string) end options = { :other_text_handler => other_text_handler, } tagged_text = words.tag_keys(text, options) do |record, word| "<span class=\"keyword\">#{h(word)}</span>" end puts "Input:" puts text puts "Tagged:" puts tagged_text -- 実行: -- % ruby /tmp/a.rb Input: muTEki マッチしない <> ガッ Tagged: <span class="keyword">muTEki</span> マッチしない <> <span class="keyword">ガッ</span> -- -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) Groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コードリーダー育成支援はじめました: http://www.clear-code.com/services/code-reader/