整理すると、(:Terms = keyword)
現状
- to_tsvector('english', :Terms)
- english-tokenizer
あるべき姿
-
英語
- to_tsvector('english', :Terms)
- english-tokenizer
- to_tsvector('english', :Terms)
-
日本語
- to_tsvector('japanese', :Terms)
- japanese-tokenizer = 形態素解析(textsearch_ja & MeCab)
- to_tsvector(:Terms)
- N-gram (bigram)
- to_tsvector('japanese', :Terms)
-
その他のpostgresが標準で対応している言語
- to_tsvector($lang, :Terms)
- $lang = Danish, Dutch, English, Finnish, French, German, Hungarian, Italian, Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish
- to_tsvector($lang, :Terms)
-
その他のマルチバイト言語(e.g. Korean, Chinese)
- to_tsvector(:Terms)
- N-gram (bigram)
- to_tsvector(:Terms)
つまり
- to_tsvector($lang, :Terms) // with tokenizer
- $langはconfig等で指定できること
- to_tsvector(Terms) // with N-Gram
この2つの形式にできればいいんじゃないでしょうか。
認識が間違っていたら、教えて下さい。
(用語として "tokenizer" というのが適切なのかもちょっと自信ないです。)
P.S.
もしかしたら他の言語を使っている人も、同じように全文検索で、困っているかもしれません。
その時に、このフォーラムを(機械翻訳を使いながら)見るかもしれません。
なので、わかりやすい日本語で書いておくと、いいのかなと思いました。
(私もあまり人のことは言えないのですが…)