Postgresql全文搜索:AND运算符的奇怪行为

时间:2015-10-14 15:46:18

标签: postgresql full-text-search

所以,我有一个带有表文档

的PostgreSQL数据表
id|fullname

我添加了一个tsv列并使用索引更新了表:

 UPDATE documents SET tsv = setweight(to_tsvector(coalesce(fullname,'')), 'A');

但是,当我执行此查询时:

SELECT id, fullname, tsv
FROM documents
WHERE (tsv @@ to_tsquery('will & smith'))

在结果中,有些行只有 smith ,而 smith 。 像这样:

  id    |   fullname   |       tsv
1779471 | gloria smith | gloria':1A 'smith':2A

此行为似乎更像是运算符而不是

您是否知道为什么& 运算符效果不佳?

1 个答案:

答案 0 :(得分:1)

在ts函数中使用simple regconfig:

select
  *
from documents
where
  to_tsvector('simple', fullname) @@ to_tsquery('simple', 'will & smith');

此处的工作示例http://sqlfiddle.com/#!15/8f950/1