Postgresql全文搜索类似的单词

时间:2016-12-08 08:13:39

标签: postgresql dictionary full-text-search

尝试按照以下步骤实现postgresql全文搜索示例;

我创建了一个表:

CREATE TABLE posts
(
id serial primary key,
content varchar(255),
tags varchar(255),
title varchar(255)
);

将表格更改为具有TSVECTOR

类型的列
ALTER TABLE posts ADD COLUMN searchtext TSVECTOR;

创建了一个触发器,用于在searchtext列中存储数据:

CREATE TRIGGER ts_searchtext BEFORE INSERT OR UPDATE ON posts FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger('searchtext', 'english', 'title', 'content', 'tags')

我插了一行:

insert into posts(content,tags,title) values('once upon a time I had a fat friend','friend, fat','Fat Boy');

searchtext列下的值为:

"'boy':2 'fat':1,10,13 'friend':11,12 'time':6 'upon':4"

现在,当我运行查询时:

SELECT * FROM posts where searchtext @@ to_tsquery('english','fot');

返回0行。

所以,基本上我正在寻找一个解决方案,其中“fot”应该与“fat”相匹配,或者我们可以说根据匹配的字母搜索结果。

或者如果我们运行:

SELECT * FROM posts where searchtext @@ to_tsquery('english','frend');

它应与“朋友”匹配。根据postgresql的文档,我认为它将在字典的帮助下完成。但现在确定我应该使用哪个.dict和.affix文件。任何人都可以帮助我更多地了解这一点。

1 个答案:

答案 0 :(得分:0)

尝试使用plainto_tsquery函数:

SELECT * FROM posts WHERE searchtext @@ plainto_tsquery('english frend');