2017-11-25 20 views
1

私にはポストを持つテーブルがあり、そのポストを使って全文検索をしたいと考えています。投稿はさまざまな言語で表示され、投稿数は大きすぎます。だから私は、テキスト列の言語を追加することができ、我々は持っているでしょう:データベース設計、全文検索の多言語化(PostgreSQL)

Posts: 
post_id bigserial PK 
post text 
post_ts tsvector 
language text 

を(さらに私はGINインデックスを追加します)

をそして、私は英語のクエリテキストを検索するとき、私は「どこの言語= 'を追加します"english":

ここからto_tsquery( 'english'、 'some query string')@@ post_tsとlanguage = 'english'を選択してください。

したがって、postgresプロセスでは、英語の投稿とスキップを含む行のみが検索されます。他の行をスキップする追加の時間はありますか?主キーに列言語を追加すると、これが役に立ちますか?それとも、異なる言語の異なるテーブルを作るために、パフォーマンスのためのより良いのだろうか?(Posts_en、Posts_fr、Posts_it)

+0

異なるテーブルに分ける価値があるとは言いにくいですが、クエリに 'language = 'english'と' language 'があり、言語がインデックスに登録されていれば(インデックスはオプティミーズにとって有益です)はいインデックスを使用する必要があります –

答えて

0

昨年、私はサポート多言語へのすべての既存のデータモデル多言語データモデリングパターンと存在についての記事を書きました情報システムのと私は、異なる状況でそれらの長所と短所を評価しました。

私の記事はあなたの問題に役立つと確信しています。楽しむ。
http://www.ijcaonline.org/archives/volume143/number10/irani-2016-ijca-910364.pdf