0

postgresql 8.4 にロシア語の辞書があります。

フル検索を使用しようとしていますが、いくつか問題があります。

  1. 4〜5個の記号で単語を見つけようとするため、結果が得られません。例えば:

    select * from parcels_temp where name_dispatcher @@ to_tsquery('Нику');
    

    結果を取得: 0 行。

    select * from parcels_temp where name_dispatcher @@ to_tsquery('Никуд');
    

    結果を取得: 2 行。あたりです。

  2. 辞書に載っていない単語で検索しようとしています。この場合どうするの?PostgreSQLで辞書を更新するにはどうすればよいですか?

  3. 列を作成する必要がありますか、tsvectorまたはto_tsvector関数 i クエリを使用できますか? それとももっとゆっくり?

4

2 に答える 2

1
  1. Postgresql インデクサーは、3 文字未満の文字列を処理しません。これは、インデックスのサイズと生成時間を削減するために行われます。

  2. 明らかに、何も得られません。辞書を更新する方法があります。ドキュメントを参照してください。

  3. tsvector フィールドで GIN インデックスを使用します

于 2013-04-17T18:48:58.950 に答える
0

1: デフォルトでは、postgreSQL は単語全体のみに一致します。プレフィックス マッチングを行うようにオプトインできます。

select * from parcels_temp where name_dispatcher @@ to_tsquery('Нику:*');

参照: https://www.postgresql.org/docs/9.5/static/textsearch-controls.html

3: 列とその上に GIN インデックスを作成することも、列を作成せずにインデックスだけを作成することもできます。性能的には同じだと思います。詳細については、 https ://www.postgresql.org/docs/9.5/static/textsearch-tables.html を参照してください。

于 2016-10-14T07:13:04.293 に答える