现在,我正在学习PostgreSQL 9.2.3中的全文搜索。但是,我有一个问题。我运行以下示例:
CREATE TABLE messages (title text,body text,tsv tsvector);
CREATE TRIGGER tsvectorupdate
BEFORE INSERT OR UPDATE ON messages FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(tsv, 'pg_catalog.english', title, body);
INSERT INTO messages VALUES('title here', 'the body text is here');
不幸的是,之后:
SELECT title, body FROM messages WHERE tsv @@ to_tsquery('title & body')
我没有结果-返回0行。你能告诉我为什么吗?根据PostgreSQL的文档,它应该可以工作。
只有“titl”和“bodi”作为查询会获得适当的结果。为什么?
最佳答案
仅带有一个参数的to_tsquery
使用默认的文本搜索配置,在您的情况下,该配置似乎不是英语。
您可以使用带有显式文本配置的表单来获得预期的结果:
SELECT title, body FROM messages
WHERE tsv @@ to_tsquery('english', 'title & body')
在SQL中使用
SHOW default_text_search_config
查看有效的文本配置,并使用SET default_text_search_config TO 'english'
将其更改为英语。关于sql - 在PostgreSQL上进行全文搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18174712/