[英]What part of this Solr-Sunspot setup am I missing?
我以為我有這個蛋糕..但任何時候我對任何關鍵字進行查詢它不會從SQL加載任何表。 我沒有錯。
user.rb
searchable do
string :first_name
string :last_name
string :name
string :email
time :created_at
end
users_controller.rb
class Admin::UsersController < Admin::ApplicationController
def index
s = Sunspot.search User do |query|
query.keywords params[:q]
query.any_of do |any_of|
any_of.with(:first_name)
any_of.with(:first_name)
any_of.with(:email)
any_of.with(:name)
end
query.paginate :page => (params[:page] && params[:page].to_i || 1), :per_page => 20
query.order_by('created_at', 'desc')
end
s.execute!
@users = s.results
render :action => 'index'
end
然后我跑了:
$> script/console
$> User.reindex
當我完全沒有搜索時..成功顯示所有User
結果
我相信我要將所有這些字符串標記轉換為文本標記,但會返回此錯誤:
Sunspot::UnrecognizedFieldError in Admin/usersController#index
No field configured for User with name 'first_name'
為了回應關鍵字,我錯過了什么?
(對您自己的自我跟進的更完整的解釋。)
關於你的設置:
searchable do
string :first_name
string :last_name
string :name
string :email
time :created_at
end
Solr中的字符串旨在用於完全匹配。 它不像文本列那樣進行預處理或標記。 這些文字匹配用於過濾(“category_name等於'Sale'”),分面,排序等。
您更可能想要text
字段。 文本字段使用標准標記符進行標記,使用LowerCase過濾器進行小寫,並使用標准過濾器刪除其點和撇號以及許多其他可能的選項。
當人們想到Solr全文搜索的功能時,他們會考慮如何處理text
字段。
此外,Sunspot的keywords
搜索方法默認搜索所有文本字段,這解釋了當您包含keywords
時未獲得結果的原因 - 您的文檔沒有要搜索的文本字段。
正如您在自我跟進中所述,您需要切換到text
字段以獲得您期望的結果。
這不是最好的答案,但我發現將字符串和文本標簽組合在一起就可以了。 所以我的用戶模型看起來像這樣:
searchable do
text :first_name
text :last_name
text :name
text :email
time :created_at
string :first_name
string :last_name
string :name
string :email
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.