• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Postgresql Mecabでの解析について)

Postgresql Mecabでの解析について

このQ&Aのポイント
  • Postgresのtextsearch_jaを設定しました。Mecabを使用してテーブルのデータを解析し、解析結果をtsvカラムに保存するトリガを設定しました。
  • しかし、検索時に「0000」というキーワードで検索してもレコードが取得できない問題が発生しました。to_tsqueryやplainto_tsqueryを使用した検索でも同様の結果でした。
  • 「0000」での全文検索の方法はわかりませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada59
  • ベストアンサー率74% (29/39)
回答No.1

MeCab が 00001 を 1 つの単語として切り出してインデックスを作っているので、基本的には 0000 で検索してもヒットしません。 MeCab を使うような分かち書き方式の全文検索では、単語を切り出すときに使う辞書によるので、お望みのようなことを行うには N-gram 方式の全文検索が適しています。PostgreSQL では Senna や Groonga といった N-Gram 方式の全文検索エンジンと組み合わせた textsearch_senna や textsearch_grronga を使うのがいいでしょう。 ただ、PostgreSQL 8.4 以上をお使いのようですので、前方一致であれば MeCab でも 0000 をインデックスを使って検索できます。 SELECT * FROM table1 WHERE tsv @@ to_tsquey('japanese', '0000*');

1minn
質問者

お礼

まだ検証中ですがtextsearch_sennaを採用しようと思っています。 ありがとうございました。

関連するQ&A