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我查询的函数?还是更慢?

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 回答