sphinx - متى يجب استخدام "و" فهارس "للحقول
-
21-09-2019 - |
سؤال
لقد قمت بتثبيت أبو الهول والتفكير-sphinx قبل بضعة أيام على Ruby on Rails 2.3.2 ، والبحث الأساسي يعمل بشكل رائع. هذا يعني ، دون أي شروط. الآن ، أريد تصفية البحث مع بعض الشروط.
لدي نموذج إعلان ، ويبدو الفهرس على النحو التالي:
define_index do
indexes title, :as => :title, :sortable => true
indexes description, :as => :description, :sortable => true
end
ربما أكون مخطئًا ، لكنني لاحظت ذلك فقط عندما أضفت :sortable => true
بناء جملة لهذه السمات ، يمكنني استخدامها كظروف في بحثي. وإلا فلن يجد أي شيء.
الآن ، أنا أيضًا أستخدم البرنامج المساعد ACTS_AS_TAGGABLE_ON ، والذي أنشأ الجداول الخاصة بي DB: العلامات والعلامات. ليس لدي نموذج للعلامات ، لدي للتو acts_as_taggable_on :tags, :categories
في نموذج إعلاناتي.
ما أود القيام به الآن هو تصفية العلامات. لذلك ، حاولت إضافة إلى الفهرس الخاص بي has tags(:id), :as => :tag_ids
بدون حظ ، وكذلك indexes tags(:id), :as => :tag_ids
لكنها لم تنجح أيضًا.
كيف يمكنني بناء الفهارس حتى أتمكن من فعل شيء مثل هذا:
Announcement.search 'some word', :conditions => {:tag_ids => some_id}
وأيضا ، وهو مختلف بين has
و indexes
شكرا يا براين
المحلول
اسمحوا لي أن أجيب على أسئلتك في الاتجاه المعاكس. indexes whatever
تتوقع سلسلة ، وهذا ما سيبحثه Sphinx عن النص الذي تقدمه.
على الجانب الآخر، has whatever
لا يضيف هذا المحتوى إلى الحقول القابلة للبحث. إنه يتوقع أرقامًا في المقام الأول ، لأنك تستخدم هذه الأشياء للفرز والتصفية بعد أن قام Sphinx بالبحث بالفعل.
أخيرًا ، أعتقد أنك تريد has tags(:id), :as => :tag_ids
في النموذج الخاص بك ، و :with => {:tag_ids => some_id}
في بحثك بدلاً من الاستخدام :conditions
. يتم استخدام الشروط في حقول النص التي قمت بفهرستها ، كوسيلة لإجراء عمليات البحث النصية في حقول محددة بدلاً من جميع الحقول المفهرسة. يستخدم لتصفية النتائج باستخدام السمات التي حددتها بها has whatever
.