如何在PostgreSQL中进行全文搜索有用?

时间:2013-01-15 08:49:58

标签: postgresql

我在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查询?或者更慢?

2 个答案:

答案 0 :(得分:1)

  1. Postgresql索引器不处理短于3个字符的字符串。这样做是为了减少索引大小和生成时间。

  2. 显然,你什么都没得到。有更新字典的方法,请参阅文档。

  3. Use GIN index on tsvector field

答案 1 :(得分: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