问题标签 [tsvector]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3027 浏览

sql - 将源自不同表的两个 postgresql tsvector 字段连接到单个 postgresql 视图中,以启用联合全文搜索

我有一个由 3 个表组合而成的 postgresql 视图:

但是,我需要将 3 个表中的 2 个表中的 tsvector 字段连接到视图中的单个 tsvector 字段中,该字段提供跨 4 个字段的全文搜索:2 个来自一个表,2 个来自另一个表。

我已经阅读了说明我可以使用 concat 运算符来组合两个 tsvector 字段的文档,但我不确定这在语法上是什么样的,以及此实现是否存在潜在的陷阱。

我正在寻找将单独表中的两个 tsvector 字段连接到视图中的示例代码,以及关于这在 postgresql 领域中是好还是坏的做法的评论。

0 投票
0 回答
92 浏览

postgresql - 使用其他数据类型然后 char 在 postgresql 中创建一个 TSVECTOR

我已经设置了一个触发器,例如:

但是当我现在尝试输入 ID 时出现错误:

那么我如何将这些 int 数据类型或一般其他数据类型转换为 char / string。

0 投票
1 回答
305 浏览

postgresql - 如何在 postgres 中检索两个 tsvector 的差异?

我有两个 varchars 字段,我想获得一个单词数组,它们存在于其中一个中,而不存在于另一个中,即:

我试着摆弄 ts_vectors,但没有运气.. postgres 中的任何其他功能支持这样的东西吗?

0 投票
1 回答
878 浏览

sql - 在 tsvector 触发器中使用 unaccent

我想在我的 tsvector 列中使用 postgresql 的 unaccent contrib 包。我已经使用 create extension unaccent 成功安装了该软件包,并检查了它是否有效。我设置了一个触发器来自动更新 tsvector 列,

然后使用以下命令在所有现有行上设置 tsv_name 列

我认为我可以通过在上面的代码中简单地将 name 替换为 unaccent(name) 来合并 unaccent 包,但这会在创建触发器代码中引发语法错误。如何解决此问题以确保 tsvector 列使用非重音字符?

0 投票
1 回答
845 浏览

sql - 从 tsvector 检索词法出现的位置和数量

有什么方法可以从 tsvector 中获取有关句子中词位位置和出现次数的信息?

像这样的东西

将返回 3

将返回 1。

0 投票
1 回答
100 浏览

postgresql - Postgresql 根据词的外观进行向量搜索

让我们先设置上下文

  • 我们的数据库是 postgres 8.4.20
  • 我的表包含一个非常大的全名列表。
  • 这些名称只能在一列中。
  • 我们正在使用向量来搜索此表。
  • 我们需要快速搜索。

现在的问题是:我可以非常快速地搜索整个表格,而且它似乎按预期工作。当您要搜索的主题有 2 个姓氏时,就会出现问题,例如:

  • 拉蒙弗洛雷斯弗洛雷斯

  • 埃内斯托·莫拉莱斯

    在这种特殊情况下,它将带入数据库中包含“Ramón Flores”或“Ernesto Morales”的每条记录。

我正在寻找的是能够只带来包含“Ramón Flores Flores”或“Ernesto Morales Morales”的记录。我在想的是创建另一个包含每条记录的统计信息的列,并添加一些 WHERE 子句以仅在每个单词仅出现一次时选择。

提前致谢 :)

[编辑] 进度说明 #1: 嗯,我尝试使用 ts_rank来赋予这些结果一些意义,然后我使用 WHERE 子句 > 0.1。虽然正在帮助我缩小这些结果的范围,但这还不是一个完整的解决方案。我会继续研究:)

0 投票
1 回答
2080 浏览

ruby-on-rails - 让 postgres 全文搜索(tsvector)像 ILIKE 一样搜索单词?

因此,假设我搜索“Blerg”。我有一个名为SomethingblergSomething 的项目。

如果我像这样在 postgres(和 rails)中进行 ILIKE 搜索:

它将返回结果“SomethingBlergSomething”,因为它包含 Blerg。

有没有办法让更快的 tsvector 在一个单词中进行类似的搜索:

上面的查询不会返回“SomethingBlergSomething”。

那么如何让 tsvector 在搜索单词时表现得像 ILIKE 一样。

0 投票
2 回答
1612 浏览

postgresql - 设置 postgres ts_vector 列

我在 postgres 中有一个带有 ts_vector 列的搜索表。当我将 dstring 插入此列时,它看起来像是对其进行了矢量化处理,但它不会执行任何词干或删除停用词:

您会注意到,在第二个插入中,删除了 3 个停用词,并且词干了(在这种情况下,不需要词干),而在第一个示例中,每个词都被添加。如何在插入之前将 to_tsvector 函数自动应用于字符串值?

0 投票
1 回答
208 浏览

postgresql - 使用包含 XML 标记的列的表上的 gin 索引进行快速查询

我有一个非常大的知识库(Yago2),其中包含 XMl 标签形式的列,例如'<Albert_Einstein>'。性能在我的用例中非常重要,所以我创建了一个这样的 gin 索引:

现在我试图用

但是,它不会返回任何结果,因为它无法在 XML 标记中进行搜索。我看到了一个可以解决上一个问题的方法:

问题是它没有很好的性能,因为它没有使用我创建的 gin 索引。如何快速查询?

0 投票
1 回答
1743 浏览

ruby-on-rails - PostgreSQL:如何绕过 ts_vector 大小限制?

我正在使用pg_search gem. 但是,其中一个表有一个Text数据类型字段,它的内容恰好比平时大一点。

现在,当我需要tsvector columntext列设置 a 时,由于文本字段大小与 tsvector 大小的关系,我面临一些限制。

ERROR: string is too long for tsvector (5068741 bytes, max 1048575 bytes)

在触发器中Text创建 tsvector 列以执行以下操作时,有什么方法可以确定跳过更大字段的条件:SQL

伪代码:

我发现没有答案的相关问题:

Postgresql - 将文本转换为 ts_vector