2016-04-29 39 views
-1

这里的问题:PostgreSQL的全文搜索:不能得到的tsvector的部分匹配

我有一个表中的PostgreSQL与纯文本和tsvectors不会忽略。我试图在这样的查询中找到地址记录。

SELECT * FROM address_catalog 
WHERE address_catalog.search_vector @@ to_tsquery('123456:* & Klingon:* & Empire:* & Kronos:* & city:* & Matrok:* & street:* & 789:*') 

但问题是,我不知道在查询中的地址。我无法确定传入字符串中的国家,城市或街道的位置。我不知道地址的顺序是什么,或者是否包含额外的单词。

我只能搜索国家和城市,但是如果传入的字符串包含街道,索引或其他任何内容,则搜索不会返回任何内容,因为所有向量令牌都会相互关联。同时,我根本无法删除一些字符串部分或使用分词,因为我不知道字符串中多余的单词在哪里。

那么,有没有什么办法来构造一个tsquery返回一些最匹配的传入字符串?或者可能部分匹配?当我试图强迫它使用而不是到处都是tsquery时,它几乎将整个数据库都返回给我。我需要矢量相交......在postgresql中。

回答