gpt4 book ai didi

ruby-on-rails - 如何从 pg_search 多重搜索中获取结果

转载 作者:行者123 更新时间:2023-11-29 13:41:50 25 4
gpt4 key购买 nike

我正在尝试在我的 Rails 应用程序中使用 pg_search gem 从一个搜索栏中搜索大量模型。

我添加了搜索栏:

   <div id="search-bar">
<%= form_tag searches_path, method: :get do %>
<span><%= text_field_tag :query, params[:query] %><%= submit_tag "Search", name: nil %></span>
<% end %>
</div>

路线:

    resources :searches 

搜索 Controller 索引方法:

    def index
@results = PgSearch.multisearch(:query)
end

然后搜索index.html.erb:

      <ul>
<% @results.each do |result| %>
<li><%= link_to result.searchable.title, result.searchable %></li>
<% end %>
</ul>

我希望可搜索的每个模型中都有类似这样的内容:

    include PgSearch
multisearchable :against => [:content, :author]

我有一个这样的初始化程序:

PgSearch.multisearch_options = {
:using => {
:tsearch => {
:dictionary => "english"
}
}
}

我创建了一个新项目以确保它已添加到 pg_search_documents 表中,并检查了终端以确认它是。

但是当我输入搜索查询时,结果表中没有任何内容?

这是搜索的终端输出:

Started GET "/searches?utf8=%E2%9C%93&query=Test" for 127.0.0.1 at 2019-01-16 13:16:48 +0000
Processing by SearchesController#index as HTML
Parameters: {"utf8"=>"✓", "query"=>"Test"}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ /Users/---/.rvm/gems/ruby-2.5.3/gems/activerecord-5.2.1/lib/active_record/log_subscriber.rb:98
Group Exists (0.2ms) SELECT 1 AS one FROM "groups" LIMIT $1 [["LIMIT", 1]]
↳ app/controllers/application_controller.rb:34
Category Exists (0.2ms) SELECT 1 AS one FROM "categories" LIMIT $1 [["LIMIT", 1]]
↳ app/controllers/application_controller.rb:37
Rendering searches/index.html.erb within layouts/application
ggPgSearch::Document Load (20.6ms) SELECT "pg_search_documents".* FROM "pg_search_documents" INNER JOIN (SELECT "pg_search_documents"."id" AS pg_search_id, (ts_rank((to_tsvector('english', coalesce("pg_search_documents"."content"::text, ''))), (to_tsquery('english', ''' ' || 'query' || ' ''')), 0)) AS rank FROM "pg_search_documents" WHERE (((to_tsvector('english', coalesce("pg_search_documents"."content"::text, ''))) @@ (to_tsquery('english', ''' ' || 'query' || ' '''))))) AS pg_search_ce9b9dd18c5c0023f2116f ON "pg_search_documents"."id" = pg_search_ce9b9dd18c5c0023f2116f.pg_search_id ORDER BY pg_search_ce9b9dd18c5c0023f2116f.rank DESC, "pg_search_documents"."id" ASC
↳ app/views/searches/index.html.erb:7
Rendered searches/index.html.erb within layouts/application (24.2ms)
Group Load (0.3ms) SELECT "groups".* FROM "groups"
↳ app/views/layouts/application.html.erb:59
Category Load (0.2ms) SELECT "categories".* FROM "categories"
↳ app/views/layouts/application.html.erb:72
Completed 200 OK in 114ms (Views: 88.4ms | ActiveRecord: 21.9ms)

页面上有 ul 标签,但没有 li 项目,我确信我输入的术语在我创建的项目中。

为什么没有得到任何结果?非常感谢

最佳答案

你有没有做到以下几点?

$ rails g pg_search:migration:multisearch

$ rake 数据库:迁移

它是多重搜索所必需的。正如您所知,现有项目可能不会添加到文档中。您需要按照文档中的说明“重建”。当你制作一个新的项目进行测试时,你是否妥善保存了它?

这是我为 pg gem 找到的文档: https://github.com/Casecommons/pg_search

关于ruby-on-rails - 如何从 pg_search 多重搜索中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54218205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com