相关疑难解决方法(0)

从 GIN 索引的 TSVECTOR 列获取部分匹配

我想通过查询得到结果:

SELECT * FROM (
  SELECT id, subject
  FROM mailboxes
  WHERE tsv @@ plainto_tsquery('avail')
) AS t1 ORDER by id DESC;
Run Code Online (Sandbox Code Playgroud)

这有效并返回tsv包含包含的行Available。但是如果我使用avai(dropped lable) 它找不到任何东西。

所有查询都必须在字典中吗?我们不能只查询这样的字母吗?我有一个包含电子邮件正文(内容)的数据库,我希望随着它每秒增长而使其快速增长。目前我正在使用

... WHERE content ~* 'letters`
Run Code Online (Sandbox Code Playgroud)

postgresql full-text-search pattern-matching

17
推荐指数
1
解决办法
2万
查看次数

PostgreSQL 在许多列上进行全文搜索

我需要一个基于指定字符串搜索记录的建议。

搜索字符串可以包含来自这些列的值。此字符串中的值不必以正确的顺序严格相同,并且此字符串中某些列的值可能会丢失。

搜索字符串示例:

22 Karntner Wien
Run Code Online (Sandbox Code Playgroud)

例如,我得到了前 5 条类似记录的结果。

我想我应该使用全文搜索,但我没有使用它的经验。你能告诉我如何进行吗?

postgresql full-text-search pattern-matching

8
推荐指数
1
解决办法
1万
查看次数

查找列中最常用的非停用词

简而言之,我有一个包含普通散文的 Postgres 列,我想确定所有行中x最常用的单词(“单词”是由空格分隔的一组字符,但不是停用词)。

我找到了两个几乎达到目标的解决方案:

SELECT *                                       
FROM   ts_stat($$SELECT to_tsvector('english', title) FROM item$$) 
ORDER  BY ndoc DESC
LIMIT  50;
Run Code Online (Sandbox Code Playgroud)

这很好,除了它返回词干。

SELECT   UNNEST(string_to_array(title, ' ')) AS word, COUNT(*) AS ct
FROM     item 
GROUP    BY 1 
ORDER    BY 2 DESC
LIMIT    50;
Run Code Online (Sandbox Code Playgroud)

这个返回完整的词,但包括停用词。

为简单起见:应该在 上找到停用词TABLE stop_words (lowercase_stopword text PRIMARY KEY)

有人可以帮我上网吗?

postgresql full-text-search string-manipulation

7
推荐指数
2
解决办法
2542
查看次数