问题标签 [pg-search]

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 投票
1 回答
860 浏览

ruby-on-rails - Speeding up queries in pg_search that use associations

I have a Rails app that uses the pg_search gem to leverage the Full Text Search capabilities of PostgreSQL.

The manual says about searching a model that has (for instance) a has_many relation:

Searching through associations

It is possible to search columns on associated models. Note that if you do this, it will be impossible to speed up searches with database indexes. However, it is supported as a quick way to try out cross-model searching.

The last lines seems to suggest that this is a good way to prototype searching through associations. And yes, it works indeed. But I typically have a 10 second latency for returning results. Is there a way to to have cross-model searching that is also fast?

Is it: search both models separately, then merge the results?

0 投票
2 回答
653 浏览

ruby-on-rails - 如何阻止 pg_search 返回 Rails 中的所有列

我在一个名为 Name 的类中有一个 pg_search_scope ,如下所示:

我需要针对范围运行 SELECT 并返回选择性列。我排除了以下待办事项:

但这会产生:

所以我们可以看到\"names\".*查询中的叶子,当然会返回所有列。

还有人遇到这个吗?有什么建议么?

:)

0 投票
1 回答
2438 浏览

ruby-on-rails - SQLite3::SQLException:无法识别的令牌:“:”:

我在运行 pg_search 时遇到问题。我认为它设置正确,但由于某种原因,在尝试运行搜索时,会出现以下情况:

课程模式:

搜索控制器:

在 html 中:

这可能是由.each引起的吗?如果我只保留 <%= @course %>,页面会加载并显示:

我应该在传递 .each 函数之前转换结果数组吗?

0 投票
0 回答
85 浏览

ruby - 修改内容的 pg_search

有谁知道如何在 pg_search 存储之前修改列内容?

完整解释:

我有Article带列的模型titlebody. 在body我存储文章的正文 html 中。

PgSearch 配置为multisearchable against: [:title, :body].

当我搜索时,我会得到包含 html 标签的搜索内容,但我想PgSearch::Document在首先创建 new 之前从文本中删除所有 html 标签。

0 投票
1 回答
241 浏览

ruby-on-rails - 来自静态值列表的建模选择

我有一个模型,它可能与零个或多个静态值相关联。例如,电影和流派(恐怖片、动作片等)我想genres在我的模型上创建一个数组,但我不确定在数据库中反映这一点的最佳方式。

我正在使用 Rails/AR 4 和 Postgres 以及pg_searchgem。

我可以走创建genres表并在两者之间创建连接表的经典路线。但是,这似乎有点矫枉过正,因为genres不要经常更改。

我可以创建一个genre枚举类型,然后genre在模型上创建一个 s 数组,但我不确定 Active Record 对这种机制的支持程度。

我需要能够根据类型和其他标准(关键字、长度、评级等)搜索电影

任何最佳实践和/或资源将不胜感激。我是否缺少更简单或更直接的解决方案?上述任何一项都无法以我没有预料到的方式解决我的问题吗?

0 投票
1 回答
975 浏览

ruby-on-rails - 如何编写模型规范来测试 PgSearch text_search 查询方法(Rspec、Rails、Postgres)

我试图在我的模型规范测试中编写几个测试,无论是否传入查询,以下方法的逻辑都有效。

models/payment.rb

这是我正在尝试编写的测试类型的示例,但对完成此操作的最佳方法却一无所知。

/spec/models/payment_spec.rb

0 投票
1 回答
97 浏览

ruby-on-rails - 使用 PostgreSQL 进行批量文本搜索

我有一个带有 PostgreSQL 数据库的 Rails 4 应用程序。我使用 PSQL 默认全文搜索某些字段,例如 university_name。我需要一次针对我的数据库发送数百个全文搜索查询。

现在,我连续执行这些查询,而且速度很慢。有什么办法可以在批处理模式下发送文本搜索?

0 投票
2 回答
2202 浏览

postgresql - 搜索太慢了。如何使用 pg_search gem 在 Rails 应用程序中重新索引 postgres 数据库?

我在我的应用程序中使用 pg_search gem 来实现搜索功能。在添加 pg_search 之前,我已经在我的 Postgres 数据库中的一个表中添加了 130,000 行数据。现在,当我运行搜索时,它需要的时间太长,即大约 16000 毫秒。

我正在关注 PostgreSQL 中的 Railscasts Episode343 全文搜索

这是我的 pg_search 模型中的代码:

我的服务器输出如下:

这是我用于索引的迁移文件

0 投票
2 回答
2718 浏览

sql - 使用 pg_search 的 Postgres 全文搜索-includes(:child_model) 用“缺少表 'child_model' 的 FROM 子句条目”打破 SQL

我正在使用带有 pg_search gem 的 postgres 全文搜索。搜索本身运行良好,但我需要进一步过滤结果,以下是详细信息:

笔记本控制器:

我得到的错误是'缺少表'邀请'的 FROM 子句条目。我尝试了许多不同的方法,包括:

  1. 用“加入”替换“包含”
  2. 将 'includes(:invites) 替换为 joins('LEFT JOIN "invites" ON "invites"."email" = "email" ')
  3. 更改 .text_search 和 .includes 调用的顺序。
  4. 在控制器、模型、范围和 text_search 函数定义中添加包含调用。

我不断收到相同的错误,并且在使用 SQL 的 join 调用时,它不会按邀请电子邮件过滤,并显示每个搜索结果的多次重复。

我会删除 include(:invites) 因为 text_search 本身工作得很好。但我真的需要包含这个条件。

任何帮助将不胜感激。也许我只是让我的 SQL 调用出错,但我也想了解为什么 .includes(:invites) 在没有 pg text_search 的情况下工作但不能使用它。

编辑 #1 - 更具体的问题

我认为这里有两个略有不同的问题。第一个似乎是结合 pg_search gem 和 'includes(:invites)' 调用的一些问题。第二个问题是我可以使用什么等效的 SQL 语句来避免调用 'includes(:invites)'。我认为它应该是某种 LEFT JOIN,但我认为我做得不对。在我的数据库中,笔记本有多个邀请,并且邀请具有属性“电子邮件”。我需要具有与 current_user 的电子邮件相等的电子邮件的邀请的笔记本。

对其中任何一个的帮助都会很棒。

0 投票
1 回答
1012 浏览

ruby-on-rails - 使用 pg_search 匹配特殊字符(例如 #、+)

我在 Rails 应用程序中使用 pg_search gem 来搜索用户——他们的简历和相关的技能模型。用户是开发人员,所以他们的技能包括“CSS”、“C++”、“C#”、“Objective C”等……

我最初使用以下搜索范围:

但是,如果您在这种情况下搜索“C++”,您会得到包含“CSS”(以及其他内容)的结果。我将范围更改为使用“简单”字典并删除了前缀:

这修复了一些问题 - 例如,搜索“C++”不显示“CSS”。但是,搜索“C++”或“C#”仍然匹配列出“C”或“Objective C”的用户

我绝对可以进行基本ILIKE匹配,但希望尽可能使用 pg_search 来完成。