如果我有这样的字符串/短语存储在数据库中:
- 什么是Q型操作?
- 程序员指南
- ABC的编码
有没有办法像传递的查询参数"Programmers"
或"abc"
或"q-type"
并将其找到"Programmer's"
,"A.B.C"
并"Q-type"
?
使用tsvector
类型,它是PostgreSQL文本搜索功能的一部分。
postgres> select 'What are Q-type Operations?'::tsvector;
tsvector
-------------------------------------
'Operations?' 'Q-type' 'What' 'are'
(1 row)
您也可以在tsvectors上使用熟悉的运算符:
postgres> select 'What are Q-type Operations?'::tsvector
postgres> || 'A.B.C''s of Coding'::tsvector;
?column?
--------------------------------------------------------------
'A.B.C''s' 'Coding' 'Operations?' 'Q-type' 'What' 'are' 'of'
从tsvector文档中:
tsvector值是不同词素的排序列表,这些词素是已归一化以合并同一单词的不同变体的单词(有关详细信息,请参见第12章)。输入期间自动完成排序和重复消除
如果您还想进行特定于语言的标准化,例如删除常用单词(“ the”,“
a”等)并进行乘法,请使用该to_tsvector
函数。它还将权重分配给不同的单词以进行文本搜索:
postgres> select to_tsvector('english',
postgres> 'What are Q-type Operations? A.B.C''s of Coding');
to_tsvector
--------------------------------------------------------
'a.b.c':7 'code':10 'oper':6 'q':4 'q-type':3 'type':5
(1 row)
显然,对查询中的每一行执行此操作都将非常昂贵-
因此,应将tsvector存储在单独的列中,并使用ts_query()进行搜索。这还允许您在tsvector上创建GiST索引。
postgres> insert into text (phrase, tsvec)
postgres> values('What are Q-type Operations?',
postgres> to_tsvector('english', 'What are Q-type Operations?'));
INSERT 0 1
搜索是使用tsquery和@@运算符完成的:
postgres> select phrase from text where tsvec @@ to_tsquery('q-type');
phrase
-----------------------------
What are Q-type Operations?
(1 row)
问题内容: 我有PostgreSQL数据库,我尝试打印所有用户(人)。 当我执行此查询时 我得到所有车主按汽车数量排序 输出: 当我尝试链接所有者ID时,所有订单都出错了。 输出:和其他数据 你看比命令是错误的。所以这是我的问题,我该如何保存该订单? 问题答案: 解开混乱。先汇总,然后再加入: 无需加入两次。如果您计数 最多或所有行, 这应该是最快的。 对于 较小的选择 , 相关子查询 更快: 至
问题内容: 我有下面的简单表: 然后,我尝试插入具有多边形的行: 并遇到此错误: 列“ poly”是多边形类型,而表达式是“ geometry”类型 真是la子 所以我的第一个问题是: 我真的必须施展吗? 无论如何,在投射之后它就可以工作了。现在,我正在尝试执行一个简单的ST_Contains查询: 这给出了错误: 我应该做些什么? 以下作品: 但这可能是因为两个参数都属于Geometry类型。针
我试图使用Django将PostgreSQL表提取到HTML中,当我在PostgreSQL的查询工具中执行空间查询时,我得到了完美的结果,但当我试图从Django执行相同的脚本时,我得到了所有的数据行。谢谢你提前帮忙。 姜戈剧本 HTML
问题内容: 在Oracle中,可以使用关键字返回SQL查询内部的内容,如下所示: 问题是: 有谁知道我在哪里可以找到相关文档? PortgreSQL(或任何其他开源DBMS)是否具有类似的功能? 问题答案: 它被称为CURSOR EXPRESSION,并在明显的地方记录了该文档:《 Oracle SQL参考》。 在这里找到它。 关于第二个问题,PostgreSQL提供的与此功能最接近的东西是“标量
查询工作正常,并返回列中有的所有记录。 但是,如果我想获取在中存在的所有记录,我就无法形成正确的查询。 查询不转义单引号,而是按字面意思转义,导致查询不完整。
问题内容: 如何声明用于PostgreSQL 8.3查询的变量? 在MS SQL Server中,我可以这样做: 我如何在PostgreSQL中做同样的事情?根据文档,变量被简单地声明为“名称类型;”,但这给了我一个语法错误: 有人可以给我一个正确语法的例子吗? 问题答案: PostgreSQL中没有这样的功能。您只能在pl / PgSQL(或其他pl / *)中执行此操作,而不能在普通SQL中执