- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 tsquery 搜索像 pro-physik.de
这样的表达式时得到了一个奇怪的结果。
如果我通过 tsquery 请求 pro-physik:*
,我想获取所有以 pro-physik
开头的条目。不幸的是,那些带有 pro-physik.de
的条目丢失了。
这里有两个例子来说明这个问题:
查询 1:
select
to_tsvector('simple', 'pro-physik.de') @@
to_tsquery('simple', 'pro-physik:*') = true
结果 1:false
(应该是 true
)
查询 2:
select
to_tsvector('simple', 'pro-physik.de') @@
to_tsquery('simple', 'pro-p:*') = true
结果 2:true
有人知道我该如何解决这个问题吗?
最佳答案
问题的核心是解析器会将pro-physik.de
解析为主机名:
SELECT alias, token FROM ts_debug('simple', 'pro-physik.de');
alias | token
-------+---------------
host | pro-physik.de
(1 row)
比较这个:
SELECT alias, token FROM ts_debug('simple', 'pro-physik-de');
alias | token
-----------------+---------------
asciihword | pro-physik-de
hword_asciipart | pro
blank | -
hword_asciipart | physik
blank | -
hword_asciipart | de
(6 rows)
现在 pro-physik
和 pro-p
是不是主机名,所以你得到
SELECT to_tsquery('simple', 'pro-physik:*');
to_tsquery
---------------------------------------
'pro-physik':* & 'pro':* & 'physik':*
(1 row)
SELECT to_tsquery('simple', 'pro-p:*');
to_tsquery
-----------------------------
'pro-p':* & 'pro':* & 'p':*
(1 row)
第一个 tsquery
不会匹配,因为 physik
不是 pro-physik.de
的前缀,第二个会匹配,因为 pro-p
, pre
和p
三个都是前缀
作为变通方法,使用这样的全文搜索:
select
to_tsvector('simple', replace('pro-physik.de', '.', ' ')) @@
to_tsquery('simple', replace('pro-physik:*', '.', ' '))
关于postgresql - 在 Postgresql 下使用 to_tsquery 搜索奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38525177/
我们有一个 postgres 数据库和大量使用 tsvector 索引我们可能需要搜索的所有文本搜索属性,并且 ts_query 的使用在我们的 postgres 数据库中非常高效。但一种可能的搜索条
我在数据库中搜索包含停用词的游戏名称时遇到问题。我只是在寻找一般的精确匹配,我希望所有搜索的“模糊”匹配尽可能少,最好为零。 E.g. content that produced false posi
我目前正在开发一个允许在 PostgreSQL 上进行搜索的网站数据库,搜索与 to_tsquery() 一起工作,我正试图找到一种方法来验证输入,然后再将其作为查询发送。 除此之外,我还尝试添加一个
我对to_tsquery和regconfig参数的用法很困惑。 使用 Windows 上的 PostgreSQL 9.0.2。 SELECT name_with_city FROM company W
如何在传递给 to_tsquery 的字符串中保留特殊字符?例如,这种查询: select to_tsquery('AT&T'); 产生: NOTICE: text-search query con
考虑以下几点: CREATE TEMPORARY TABLE foo (string text); INSERT INTO foo VALUES ('the small but capable
有谁知道如何在 sqlalchemy 中使用 postgresql 的 to_tsquery() 函数?我在谷歌上搜索了很多,我没有找到任何我能理解的东西。请帮忙。 我希望它在像这样的过滤器功能中可用
如何构造 to_tsquery 来搜索特殊字符,如 , "_"等...? 我的 tsvector 列中有条目,如“v_130”,我想搜索“v_130”,但是当我构造 to_tsquery 时,例如 t
我想为我的应用程序提供多语言搜索支持。 Postgresql 9.6 Search Controls说我需要 tsvector 和 tsquery 来正确解析/规范化文本。这适用于基于罗马的语言,但不
我想获取用户在数据库中输入的单词: select name from users where to_tsvector(name) @@ to_tsquery('$word:*') 我提到 word =
如果直接写 $sql = "... to_tsquery( 'word_1 | word_2' )"; 有效,但如何将此语法与 PDO 的准备语句一起使用? 什么是正确的语法: $sql = " ..
我在使用 tsquery 搜索像 pro-physik.de 这样的表达式时得到了一个奇怪的结果。 如果我通过 tsquery 请求 pro-physik:*,我想获取所有以 pro-physik 开
在 PostgreSQL 中,我们可以像这样基于全文搜索来搜索表 - SELECT title FROM pgweb WHERE to_tsvector('english', body) @@ to_
postgres 的全文搜索包括以下一些搜索函数:plainto_tsquery、to_tsquery 和 to_tsvector。 我不明白它之间的区别,结果总是包含相同的词,但在 tsvector
我有一个包含这些字段的简单表格 最后两个字段用于对一个使用 tsvector 数据类型的索引,另一个使用文本数据类型的索引。 我想对名称或 ID 执行查询。我正在做这个 SELECT * FROM f
我应征入伍帮助完成一个项目,在多年未使用 PostgreSQL 后,我又重新投入使用。除了缺乏使用之外,我以前从未遇到过使用 tsvector 字段,现在发现自己面临基于它们的错误。我阅读了有关字段类
我是一名优秀的程序员,十分优秀!