Sql Postgres to_tsquery-奇怪的结果

Sql Postgres to_tsquery-奇怪的结果,sql,postgresql,Sql,Postgresql,我对to_tsquery和regconfig参数的用法感到非常困惑 使用Windows上的PostgreSQL 9.0.2 SELECT name_with_city FROM company WHERE name_with_city @@ to_tsquery('simple', 'aires|aires:*') 0 rows retrieved. …这是正确的结果, 但是: 似乎在寻找“空气”而不是“艾利斯”。。据我所知,这应该归功于《英语》词典 但使用“简单”也不总是有效 SELE

我对to_tsquery和regconfig参数的用法感到非常困惑

使用Windows上的PostgreSQL 9.0.2

SELECT name_with_city 
FROM company 
WHERE name_with_city @@ to_tsquery('simple', 'aires|aires:*')

0 rows retrieved.
…这是正确的结果, 但是:

似乎在寻找“空气”而不是“艾利斯”。。据我所知,这应该归功于《英语》词典

但使用“简单”也不总是有效

SELECT name_with_city 
FROM company 
WHERE name_with_city @@ to_tsquery('simple', 'harms|harms:*')

0 rows retrieved.
这是错误的,但是

SELECT name_with_city 
FROM company 
WHERE name_with_city ILIKE 'harms%'

"Harms & Wende Hamburg"
1 rows retrieved.
…是正确的

我必须使用什么查询来代替?
据我所知,我可以使用tou-tsquery在文本列中查找部分单词,例如:搜索“tech*”将显示“Lufthansa Technik”和“Technical Aero”,但不会显示“Airtech”。

如果默认的搜索配置(请参见
获取当前配置()
)为英语,则

name_with_city @@ to_tsquery('simple', 'harms|harms:*')
相当于:

to_tsvector('english', name_with_city) @@ to_tsquery('simple', 'harms|harms:*');
这确实不是您想要避免的英语词干,您更希望:

to_tsvector('simple', name_with_city) @@ to_tsquery('simple', 'harms|harms:*');
对于示例字符串“Harms&Wende Hamburg”,如果
simple
配置同时用于
tsvector
tsquery
,则示例查询匹配:

select 1 WHERE to_tsvector('simple','Harms & Wende Hamburg') 
    @@ to_tsquery('simple', 'harms|harms:*');
=> 1

结论:如果默认的tsearch配置(请参阅
获取当前的Tseu配置()
)为英语,则在TS查询中发出
设置默认的\u text\u search\u config='simple'
,或显式使用
to\u tsvector('simple',column\u name)
表单,而不仅仅是
column\u name

name_with_city @@ to_tsquery('simple', 'harms|harms:*')
相当于:

to_tsvector('english', name_with_city) @@ to_tsquery('simple', 'harms|harms:*');
这确实不是您想要避免的英语词干,您更希望:

to_tsvector('simple', name_with_city) @@ to_tsquery('simple', 'harms|harms:*');
对于示例字符串“Harms&Wende Hamburg”,如果
simple
配置同时用于
tsvector
tsquery
,则示例查询匹配:

select 1 WHERE to_tsvector('simple','Harms & Wende Hamburg') 
    @@ to_tsquery('simple', 'harms|harms:*');
=> 1

结论:在TS查询中发出
设置默认\u text\u search\u config='simple'
或显式使用
to\u tsvector('simple',column\u name)
表单,而不仅仅是
column\u name

尝试查看结果TS\u debug尝试查看结果TS\u debug