أبو الهول إرجاع نتائج البحث السيئة
-
09-09-2019 - |
سؤال
أنا أستخدم أبو الهول مع البرنامج المساعد Sphinx التفكير. لقد فهرست نموذجا يسمى المكان مع التعليمات البرمجية التالية (و Cake Thank_Sphinx: أمر الفهرس)
define_index do
indexes :name
indexes city
indexes zip
end
أحصل على النتائج في جهاز التحكم الخاص بي مع هذا الرمز:
@venues = Venue.search params[:search]
وتقديمهم ك json. المشكلة التي لدي هي أنه عندما أضرب عنوان URL هذا:
http://localhost:3000/venue/list?search=Baltimo
أنا لا أحصل على شيء. ولكن عندما تضغط على عنوان URL هذا:
http://localhost:3000/venue/list?search=Baltimor
أحصل على جميع الأماكن الموجودة في مدينة بالتيمور. لسبب ما أن حرف واحد يحدث فرقا. من الناحية النظرية، يجب أن أحصل على جميع الأماكن في بالتيمور إذا كنت مجرد البحث بحرف واحد - 'B'
لا أحد يعرف ما الذي يجري هنا؟
شكرا لك
المحلول
إلا إذا كان لديك enable_star
تعيين إلى 1 و min_prefix_len
أو min_infix_len
اضبط على 1 أو أكثر، فلن تحصل على B لتتناسب مع بالتيمور (وحتى بعد ذلك، أعتقد أنك بحاجة إلى البحث عن B * للحصول على المباراة).
ما يحدث هنا هو أنه بشكل افتراضي، فإن التفكير sphinx يخبر أبو الهول لاستخدام stemmer الإنجليزية، والذي يسمح مماثل الكلمات (بواسطة الشخصيات، وليس حسب المعنى) تعتبر مباريات، لذلك يضع بالتول و بالتيمور. في نفس السلة.
إذا كنت ترغب في الحصول على أي جزء من أي كلمة مطابقة، فأنت بحاجة إلى وضع شيء مثل ما يلي في التكوين / sphinx.yml:
development:
enable_star: 1
min_infix_len: 1
test:
enable_star: 1
min_infix_len: 1
production
enable_star: 1
min_infix_len: 1
ثم توقف SPHINX، إعادة فهرس، وإعادة تشغيل أبو الهول. بمجرد القيام بذلك، يجب إرجاع البحث عن B Baltimore.
أتمنى أن يساعدك هذا.