我有一个像这样的查询
select * from mytable where posttext @@ to_tsquery('Intelence');
我只想返回与关键字“Intelence”而不是“intel”完全匹配的结果,我该如何在 postgresql 中做到这一点?
谢谢。
我有一个像这样的查询
select * from mytable where posttext @@ to_tsquery('Intelence');
我只想返回与关键字“Intelence”而不是“intel”完全匹配的结果,我该如何在 postgresql 中做到这一点?
谢谢。
这在全文搜索中是不可能的,除非您想通过更改文本搜索字典来告诉 PostgreSQL 根本不要词干 Intelence
。Pg 不包括索引中的单词,只有词干:
regress=> SELECT to_tsvector('english', 'Intelence');
to_tsvector
-------------
'intel':1
(1 row)
simple
您可以使用字典完全抑制词干:
regress=> SELECT to_tsvector('simple','Intelence');
to_tsvector
---------------
'intelence':1
(1 row)
但这必须在索引上完成,您不能按查询进行,更不用说按搜索词了。因此文本cats are bothering me
不会匹配字典中的搜索,因为复数,或者cat
因为未词干的词不一样。simple
bother
如果您想进行个别例外,您可以编辑english
tsearch2 使用的字典并定义具有所需更改的自定义字典,然后使用该字典而不是english
在您想要例外的查询中。同样,您必须使用相同的字典来创建索引和查询。
这可能会导致您需要多个全文索引,从减慢更新/插入/删除速度和内存使用效率的角度来看,这是非常不可取的。