البقع الشمسية سولر، القضبان والطلب
-
27-10-2019 - |
سؤال
انا املك project
نموذج في تطبيق Rails 3.1 الخاص بي وأريد استخدام Solr لإجراء بحث عليه.
لقد قمت بتعريف البحث كالتالي:
searchable do
text :nr, :boost => 5 # nr is integer
text :name, :boost => 5
text :description, :boost => 2
text :client do
client.name
end
text :tasks do
tasks.map(&:name)
end
end
المشروع رقم، في نموذجي يسمى للتو nr
, ، اكتب عدد صحيح، هو المرجع الأكثر استخدامًا للعثور على المشروع.
الآن، بالإضافة إلى وجود نموذج بحث، ما زلت أريد أن يتم ترتيب مشاريعي حسب nr
عندما لم يتم إجراء أي بحث، ولكن هذا لا يعمل - يبدو أن مشروعي في ترتيب عشوائي تمامًا.يبدو رمز إجراء فهرس ProjectsController الخاص بي كما يلي:
def index
@search = Project.search do
fulltext params[:search]
paginate :page => params[:page]
order_by :nr, :desc
end
@projects = @search.results
#@projects = Project.active.visible.design.order("nr desc")
respond_to do |format|
format.html # index.html.erb
format.json { render json: @projects }
end
ولكن عندما أقوم بزيارة myapp/projects أحصل على ملف
Sunspot::UnrecognizedFieldError in ProjectsController#index
No field configured for Project with name 'nr'
خطأ...
أي أفكار عما يجب أن أفعله للطلب عن طريق رقم.؟
شكرًا
المحلول
حسنًا، لقد قمت بحلها عن طريق تحويل nr
الحقل إلى عدد صحيح في البحث الخاص بي:
searchable do
integer :nr
text :name, :boost => 5
text :description, :boost => 2
text :client do
client.name
end
text :tasks do
tasks.map(&:name)
end
end
لقد تمكنت الآن من طلب ذلك بشكل جيد ولكن لم يعد بإمكاني إجراء بحث نصي في project_nr بعد الآن.لذلك أضفت سمة افتراضية name_number
لي Project
model وبدلاً من ذلك بحثت في هذا المجال.
def name_number
"#{self.nr} - #{self.name[0..24]}"
end
الآن لدي الطلب والبحث في المكان ...إذا كانت هناك أفكار أخرى/أفضل، فاستمر في القدوم!