سؤال

انا املك 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

الآن لدي الطلب والبحث في المكان ...إذا كانت هناك أفكار أخرى/أفضل، فاستمر في القدوم!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top