2013-01-15 68 views
0

我在postgresql 8.4中有一個俄語字典。如何在PostgreSQL中進行全文搜索有用?

我嘗試使用完全搜索,但有一些麻煩。

  1. 我沒有得到任何結果因爲試圖找到4-5symbols單詞。例如:

    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函數我查詢?或者它更慢?

回答

1
  1. PostgreSQL的索引不處理字符串少於3個字符。這樣做是爲了減少索引大小和生成時間。

  2. 很明顯,你什麼也得不到。有更新字典的方法,請參閱文檔。

  3. Use GIN index on tsvector field

+0

1.我使用4-5個符號。 2.你可以給這個文檔的鏈接。部分? –

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