- ベストアンサー
PostgreSQLでの日本語検索方法とは?
daichieの回答
> いろいろネットを調べてみると、PostgreSQLで日本語の検索をやるにはpg_trgmやpg_bigmを > インストールしないとダメなようなことが書いてあるのですが、私がやったことは誤っているのでしょうか? 日本語の検索をするのにpg_trgmやpg_bigmのインストールが必須ということはありません。 これらは、PostgreSQL上で全文検索機能を提供するツールです。 これらを使うことで、spring3333さんが書いている中間一致検索のSQLに対しても、 インデックスを使って高速な検索が可能です。(これは、日本語、英語関係ありません。) 中間一致検索が多い場合は、こういったツールの導入も考えた方がいいかもしれませんね。 蛇足かもしれませんが、各検索方法にどういったインデックスが効くのかは以下のページを参考にされるとよいかと思います。 ●Let's PostgreSQL ~テキスト検索の方法とインデックス http://lets.postgresql.jp/documents/technical/text-processing/3/
関連するQ&A
- PostgreSQLの「*」について・・?
こんにちわ, 今PostgreSQLを勉強しています。 たとえば, SELECT * FROM table where field ~ 'a'; とすると,tableテーブルからfieldに「a」が入っている項目を抜き出す,となります。 これに SELECT * FROM table where field LIKE '*a'; とすると,エラーが出てしまいます。 *(ワイルドカード)の使用はどのようなときに使用するのでしょうか。PostgreではLinuxとは違う使用をすると書いてあったのですが,よくわかりません。 よろしくおねがいします。
- ベストアンサー
- PostgreSQL
- MySQLで日本語検索
MySQL初心者のものです。 今PHPとMySQLを利用して検索システムを作っています。 しかし日本語検索がどうしてもうまくいきません。 一応「教えてgoo」でも探してみたのですが、解決しませんでした。 MySQLで、 テーブル名 table フィールド名 field とすると、 select * from table where field like '%キーワード%'; のように検索してみたのですが、思うような結果が返ってきません。 ネットで検索すると「senna」をインストールと書かれていましたが、 そういったものをインストールしなければMySQLで日本語検索は出来ないものなのでしょうか? ちなみに MySQL5.0 PHP5.2.1 を利用しています。
- 締切済み
- MySQL
- PostgreSQLでの類義語検索
かけだしのプログラマーです。 PostgreSQLで全文検索や類義語検索を行います。 現在、Ludiaの使用を検討していますが、Ludiaには類義語検索機能はないと、 サイトに書いてありました。 また、「PostgreSQL、類義語」で検索してみたところ、dict_xsyn(拡張類義語辞書) というものがひっかかりましたが、情報が少なすぎてコレがいまいち何なのか分りません。 類義語検索を行うのに、何か効率の良い方法があるかご存知でしょうか? もしくは、原始的にselect文にORを組み合わせて発行するしかないのでしょうか? 御助言よろしくお願いします。 <条件> PostgreSQL 8.3 類義語検索 EUC-JP 全文検索機能,類義語検索機能
- 締切済み
- PostgreSQL
- PostgreSQLの言語設定について
サーバーOS:ターボ10 クライアントOS:winXP DB:PostgreSQL 7.4.5 エミュレータ:Tera Term Pro version 2.3 この場合、PostgreSQLのエンコードは何がいいですか? やりかたはどうすれば良いですか? Tera Termのエンコードは一応SJISにしようかと漠然と思いましたがEUCの方がいいですか? サーバー自体のエンコードは何か設定必要ですか? (1)winXPからTera Termでターボ10に搭載したポスグレのテーブル項目に日本語をインサートし、そのテーブルをODBC経由でwinXPのアクセスでブラウズする。 サーバー操作 create table tbl1 (item1 char(10)); insert into tbl1 values('あいうえお'); PC操作 アクセスでブラウズ (アクセスの接続は解決済み) (2)winXPのアクセスでODBC経由のポスグレのテーブルを編集した後、Tera Termでターボ10に搭載したポスグレのテーブル項目に日本語の検索をかける。 PC操作 アクセスで'かきくけこ'を挿入。 サーバー操作 select * from tbl1 where item1 like'か%';
- ベストアンサー
- PostgreSQL
- PHPとPostgreSQL接続 (スキーマ)
いつもお世話になっております。 現在、PHP(5.3.1)とPostgreSQL(9.2)で開発をしております。 エラーが発生しており大変困っております。 こちらが発生するエラーです。 Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: schema スキーマが見つからないとのことです。 そして、以下がコードとなります。 <?php // PostgreSQL Connect if (!($cn = pg_connect("host=*** port=*** user=*** password=*** dbname=***"))) { die; } // PostgreSQL Select $sql = "select * from t_test.na1"; if (!($rs = pg_exec($sql))) { die; } // PostgreSQL Get Records $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); $txt = "${item[1]}"; } // PostgreSQL Disconnect pg_close($cn); ?> 現在のデータベースのスキーマについてですが「na1」と「public」の2つが存在しています。 試しに、na1とpublicのテーブルをまったく同じにして SQLの部分を「select * from t_test」に変更すると「public」側のテーブルが覗けます。 しかし、SQLの部分を「select * from t_test.na1」に変更すると「スキーマが見つかりません」 というエラーが発生してしまいます。 スキーマがあるにもかかわらずこのエラーがでてしまうため原因が分からず困っております。 もしお分かりになる方いらっしゃいましたら、教えていただければと思います。 何卒よろしくお願いします。
- ベストアンサー
- PHP
- LIKE検索の場合うまくいきません
WEBアプリとSQLServerでSELECTをするときに不正をされないように SELECT * FROM DB WHERE DB.A = 検索文字 を SELECT * FROM DB WHERE DB.A= @A のようにして、@Aを後で指定しますが、 SELECT * FROM DB WHERE LIKE '%検索文字' のようにLIKE検索の場合うまくいきません。 どのように記述したらいいのでしょうか? SELECT * FROM DB WHERE DB.A LIKE @A --> 駄目 SELECT * FROM DB WHERE DB.A LIKE '%@A' --> 駄目
- ベストアンサー
- SQL Server
- sjisでのあいまい検索を教えてください
Postgres8です。 データベースのエンコーディングは【SQL_ASCII】です。 LIKE検索をした場合のSJISの文字化けに対する対処方法を教えてください あいまい検索をしたいのですが、 文字化け対象文字を含む場合、 どのように記述すればいいのですか? select * from aaa where name = 'パソ\コン'; 上記のように完全一致で検索をすると抽出できます。 select * from aaa where name like '%パソ%' 上記のよう指定してlike検索をしても抽出できます。 しかし以下の場合どちらでも抽出できません。 select * from aaa where name like '%パソコ%' select * from aaa where name like '%パソ\コ%' よろしくお願い致します。
- 締切済み
- PostgreSQL
- PHPとPostgreSQL
PHP4.3.1とPostgreSql7.2.4で簡単な検索システムを作っています。 ユーザーがWeb上から入力した値をSQLのWhere句に指定していますが、 大文字小文字の区別なく検索したい為、lowerを使っていますがうまく行きません。 $strWord=$txtWord//ユーザー入力文字列 //以下SQL $query = "select Title from t_Master Where lower(Title) like '%$strWord%')"; 全て大文字小文字の区別無しに検索できる方法がありましたらご教授ください。
- ベストアンサー
- PHP
- DELETEの操作で (PostgreSQL)
linux postgresql 8.4 で1行DELETEしたいのですが select * from table_a where a_key = 1400; で1件検索できても delete from table_a where a_key = 1400 returning *; としてもレコードが表示されません。 原因の調べ方を教えてもらえないでしょうか? よろしくお願いします。
- 締切済み
- PostgreSQL
お礼
テストに使用したデータ件数が少なかったので速度はわからなかったのですが、件数が増えると検索速度にかなり影響が出るという事なんですね。 参考URLありがとうございます。 勉強になりました。