![](/img/trans.png)
[英]How to configure a pg_search multisearch on associated models in Rails?
[英]How to get results from a pg_search multisearch
我試圖在我的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
搜索控制器索引方法:
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 db:migrate
多重搜索是必需的。 同樣,您可能已經知道,現有項目可能不會添加到文檔中。 您將需要按照文檔中的說明“重建”。 制作新項目進行測試時,是否正確保存了?
這是我為pg gem找到的文檔: https : //github.com/Casecommons/pg_search
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.