![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Postgresのtextsearch_jaを設定しました。
そこでMecabを使用しています。
例として以下のテーブルで
create table table1 ( id int, col1 text, col2 text, tsv tsvector );
更新処理時にtsvカラムに解析データが入るようにトリガを設定しました。
col1に「田中00001」をINSERTします。
解析するtsvカラムには「田中」と「00001」が入ります。
ここで、「0000」と検索しても、レコードを取得できませんでした。
投げたSQLは以下のような感じです。
select * from table1 where tsv @@ to_tsquery('japanese', '0000')
select * from table1 where tsv @@ to_tsquery('japanese', '0000')
とした場合はレコードを取得することができます。
以下も試しましたがレコードは取得できませんでした。
select * from table1 where tsv @@ plainto_tsquery('japanese', '0000')
「0000」にて検索した場合に、全文検索の機能でレコードを取得する方法はありますでしょうか?
postgres8.4.5
Mecab 0.98
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*');
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
今って秋田新幹線へ動いてますか?
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
JDBCを使ってdate型へのINSERT...
-
PostgreSQLのtimestamp型で時間...
-
SQLで、Join句で結合したテ...
-
予約システムでの時間の設計に...
-
1行のSQL文を改行するツール
-
1つのSQLで2段階の抽出を行い...
-
pandasでsqlite3にテーブル作成...
-
テーブル名が可変の場合のクエ...
-
timestampのデータはどのように...
-
T-SQLで任意の箇所で強制終了す...
-
ACCESS クエリーでソートの不具合
-
DB2のSQLコマンドについて
-
ORACLEのスキーマーを別のORACL...
-
insert処理でDATE型を追加したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
2つの列からの最大値取得
-
複数行の結果を単一列に連結
-
SQLについて
-
SQLで2年連続で値が上昇した年...
-
SQL 複数条件を設定
-
CREATE VIEWについて
-
SQLのこと:distinctして並び替...
-
SQL 複数条件を設定
-
sql,union,これはエラーですか...
-
月に対応するフィールドを抽出...
-
PostgreSQL で自動採番する方法
-
SQL文の長さ制限について
-
order byで並び変えし最大値の...
-
SQLで期間をずらした集計処理
-
Postgresql Mecabでの解析について
-
Openldap関係でまた詰まってし...
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
おすすめ情報