لاحظت مؤخرًا أنه عند البحث عن موضوع محدد، تُظهر نتائج البحث منشورًا في منتصف الموضوع بدلاً من المنشور الأول. يحدث هذا عندما يحتوي منشور في الموضوع على نفس مصطلح البحث الذي يتضمنه عنوان الموضوع. إليك مثالين حديثين من http://community.wanikani.com:
لقد وضعت هذا في #feature لأنني لست متأكدًا بنسبة 100% من أن هذا السلوك عمل دائمًا بالطريقة التي أصفها. ومع ذلك، أبحث عن المصطلح الثاني المذكور أعلاه عدة مرات في السنة، وأنا متأكد تمامًا من أن نتائج البحث كانت تُرجع المنشور الأول في الموضوع سابقًا. إذا تم تغيير هذا السلوك عن طريق الخطأ في مرحلة ما، فيمكن اعتبار ذلك bug.
أعلم أن هناك خيار بحث متقدم للبحث في عناوين المواضيع فقط، لكن يبدو ذلك غير ضروري في هذه الحالة. نظرًا لأن مصطلح البحث يتطابق مع العديد من المنشورات في الموضوع وكذلك مع العنوان نفسه، أعتقد أنه يجب إعطاء الأولوية تلقائيًا لتطابق العنوان وإرجاع المنشور الأول.
نعم، ناقشنا هذا الأمر بشكل مطول. بشكل عام، تفضيلي هو أن يكون البحث بسيطًا جدًا ويعطي أولوية دائمًا للمطابقة الأولى في الموضوع بغض النظر عن الترتيب. هذا يجعل الأمر أسهل بكثير في شرحه للناس، بينما يبدو الترتيب تعسفيًا وغامضًا.
أتفهم الطلب في الموضوع الأصلي بالسماح للبحث بالرجوع إلى الموضوع نفسه (أي المشاركة الأولى) إذا تطابق عنوان الموضوع مع معايير البحث. وإذا لم يتطابق، فيرجى الرجوع إلى المشاركة المحددة التي يحدث فيها التطابق.
بصراحة، طالما أن المنشور الأول (عبر مطابقة العنوان) مُعطى الأولوية فوق كل شيء، فلا يهمني الكثير الباقي، لكن ما تقوله يبدو معقولًا لي. عندما يتطابق العشرات من المنشورات في الموضوع مع العبارة التي تبحث عنها تمامًا، فإن المنشور الذي يُعاد فعليًا في نتائج البحث يبدو تعسفيًا حاليًا. يبدو لي أن إعادة دائمًا أول منشور مطابق في الموضوع حل جيد.
ومع ذلك، يجب على خوارزمية البحث على الأقل أن تُعطي أولوية للمطابقات التامة لضمان عدم تفضيل منشور سابق يطابق مصطلح البحث جزئيًا فقط على منشور لاحق يطابقه تمامًا. لا أعرف ما إذا كان ذلك ذا صلة لأنني لست على دراية كافية بالخوارزمية. على أي حال، كما قلت سابقًا، أعتقد أن كل هذه التفاصيل أقل أهمية بكثير من إعطاء الأولوية لمطابقة العنوان فوق كل شيء.
أستمر في تلقي التنبيهات من أشخاص يشاركون رابطًا لمنشور لي من وسط موضوع ما، بينما كانوا يقصدون مشاركة الموضوع نفسه. إن النهج الحالي يسبب بالتأكيد ارتباكًا.
نعم @tgxworld و @sam، يجب تغيير هذا حقًا. لقد تجاوزنا قاعدة الثلاثة بكثير هنا. يجب أن يكون لمطابقة العنوان وزن مُفرط هائل كالثقب الأسود الفائق في الترتيب.
لا أعتقد أن الأمور يمكن أن تكون بسيطة لدرجة إعطاء الأولوية دائمًا للمنشور الأول في الموضوع، لأن تغيير سيناريو بحث محدد سيؤثر على آخر. ضع في اعتبارك السيناريو التالي:
يحتوي كل من الموضوع X والموضوع Y على منشورات تطابق مصطلح البحث المعطى “discourse”.
يتطابق المنشور رقم 1 والمنشور رقم 100 في الموضوع X مع مصطلح البحث “discourse”.
يُصنَّف المنشور رقم 100 في مرتبة أعلى لأن محتواه تطابق أفضل بكثير لمصطلح البحث “discourse”.
يتطابق المنشور رقم 1 في الموضوع Y مع مصطلح البحث “discourse”.
يُصنَّف المنشور رقم 1 في الموضوع Y في مرتبة أعلى من المنشور رقم 1 في الموضوع X لأن محتواه أكثر صلة بمصطلح البحث “discourse”.
بالنسبة للنهج السابق، كنا نأخذ ترتيب المنشور رقم 100 في الموضوع X لنقارنه بالمنشور رقم 1 في الموضوع Y. في هذه الحالة، يظهر المنشور رقم 1 في الموضوع X أعلى في نتائج البحث من المنشور رقم 1 في الموضوع Y، رغم أن المنشور رقم 1 في الموضوع Y يطابق مصطلح البحث بوضوح أفضل من المنشور رقم 1 في الموضوع X. وهذا يعادل ترتيب المواضيع بأخذ أعلى ترتيب للمنشور داخل الموضوع.
إذا أخذنا ببساطة أول منشور في موضوع يطابق مصطلح البحث، فإننا ننتهي باستبعاد منشورات تكون مطابقة أفضل ولكن لها رقم منشور أعلى في موضوع، مما يثير أسئلة حول سبب عدم تضمين هذا المنشور في نتائج البحث.
أعتقد أن اعتراض رئيسي لدي هنا على ما يُقترح هو أن البحث افتراضيًا يبحث عن منشورات، لذا فإن نص المنشور هو في الواقع ما يبحث عنه المستخدم، وليس العنوان. يساعدنا العنوان في تصفية جميع المواضيع للوصول إلى المنشورات الصحيحة للبحث فيها.
في الواقع، نحن نمنح مطابقة العنوان وزنًا أعلى. المشكلة الوحيدة هي أن العنوان جزء من بيانات البحث لجميع المنشورات في موضوع معين، لذا فإن جميع المنشورات تستفيد فعليًا من نفس الوزن لمطابقات العنوان.
لا أعتقد أن أحدًا يقترح ذلك. نحن نقول إننا نريد ترتيب مطابقات العناوين بشكل أعلى، وهو ليس السيناريو الذي وصفته للتو. عندما يتطابق العنوان مع مصطلح البحث، يجب أن يعزز ذلك تحديدًا ترتيب المشاركة الأولى، وليس جميع المشاركات داخل الموضوع.
أختلف مع هذا التقييم. لا يهتم المستخدمون بإيجاد مشاركات محددة، بل بإيجاد محتوى. عندما تكون العناوين مُسماة بشكل صحيح، فإن العنوان غالبًا ما يكون أفضل مؤشر لما يريده المستخدم، ومعظم الوقت يعني ذلك البدء بالمشاركة الأولى.
على الأقل في المجتمع الذي أستخدمه، هناك مواضيع في بعض الفئات الفرعية يُبحث عنها غالبًا بغرض مشاركتها عندما يطلب مستخدمون آخرون المساعدة. الحصول على مشاركة عشوائية داخل الموضوع من نتائج البحث بدلاً من المشاركة الأولى أدى إلى مشاركة مشاركات خاطئة، مما نتج عنه عدم حصول المستخدمين على المساعدة بسرعة كما كان ممكنًا.
سواء كان ذلك للمشاركة أو للاستخدام الشخصي، أعتقد أيضًا أنك تُقلل من تقدير مدى رغبة المستخدمين في البحث عن نفس الموضوع مرارًا وتكرارًا، وأعتقد أنه في هذه الحالات، في الغالبية العظمى من الأحيان، يريد المستخدمون إما المشاركة الأولى أو الاستمرار من حيث توقفوا.
السيناريو الذي وصفته هو كيف كان يعمل البحث في Discourse سابقًا، وهو سلوك غير صحيح.
أعتقد أن صياغة هذه الجملة كانت خاطئة؛ فالبحث يبحث افتراضيًا عن مزيج من عنوان الموضوع ومحتوى المنشور معًا.
رغم أن هذا قد يكون صحيحًا، إلا أنه ليس دائمًا الحال، لأن هذا يفترض أن مصطلح البحث سيتطابق دائمًا مع عنوان الموضوع. في منتديات البرمجة، أبحث أحيانًا عن مقتطفات كود، وهو شيء لا يظهر عادةً في العنوان.
ما يُقترح ليس مستحيلًا، رغم أننا سنحتاج إلى اتخاذ بعض القرارات التقنية وموازنة بعض المقايضات. على سبيل المثال، نحتاج إلى إزالة عنوان الموضوع من PostSearchData للمنشورات التي ليست المنشور الأول. وهذا يضمن أن مطابقات عنوان الموضوع ستضع المنشور الأول في ترتيب أعلى من المنشورات الأخرى في الموضوع، لكننا ما زلنا خاضعين لخوارزمية الترتيب في Postgres.
إليك مثال آخر لتوضيح حالة الاستخدام الخاصة بي. قمت بالبحث عن “كانجي خاص” على https://community.wanikani.com بهدف العثور على هذا الموضوع: Special kanji words derived from other words - Kanji - WaniKani Community. أردت النظر إلى جدول البيانات في المنشور الأول، وهو ويكي. كما ترون، يطابق مصطلح بحثي تمامًا بداية عنوان الموضوع. ومع ذلك، لا يحتوي المنشور الأول فعليًا على كلمة “خاص”، لذا تم إعطاء الأولوية لـ منشور آخر بدلاً من ذلك، فقط لأن كلا الكلمتين “خاص” و"كانجي" موجودتان في المنشور في مكان ما.
@sam أتساءل عن رأيك في هذا. يبدو أن البحث يصنف النتائج بشكل صحيح لأن “المنشور في مكان ما” يحتوي على مصطلحات البحث في العنوان والمحتوى، بينما يحتوي المنشور الأول على مصطلحات البحث في العنوان فقط. يبدو غير بديهي أننا نرغب في إظهار المنشور الأول عندما يكون منشور آخر تطابقًا أفضل بكثير. من خلال ما أراه، هناك عدة خيارات يمكننا النظر فيها:
العودة إلى السلوك القديم. عندما يتطابق منشوران أو أكثر في موضوع ما مع مصطلح بحث معين، اختر دائمًا المنشور الذي يحمل أصغر رقم. العيب هنا هو أن أصغر رقم قد لا يكون دائمًا للمنشور الأول، وقد تكون نتائج البحث ضعيفة في هذه الحالة. هناك أيضًا حالات يكون فيها محتوى المنشور تطابقًا أفضل بكثير، لكنه يُستبعد فقط لأن منشورًا آخر برقم أقل في الموضوع يتطابق أيضًا مع مصطلحات البحث.
أتساءل عما إذا كان بإمكاننا حل المشكلة من جانب تجربة المستخدم. بدلاً من وجود رابط واحد فقط ينقل إلى المنشور، ربما يكون عنوان نتيجة البحث دائمًا مرتبطًا بالمنشور الأول في العنوان، بينما يربط مقتطف البحث بالمنشور الذي احتل المرتبة في نتيجة البحث.
استبعاد معلومات عنوان الموضوع من PostSearchData للمنشورات التي ليست المنشور الأول. سنحتاج إلى تجربة بعض الأشياء قليلاً، لكنني أتوقع أن يؤدي ذلك إلى تحيز كبير في نتائج البحث لصالح إرجاع المنشورات الأولى.
أميل إلى تجربة الخيار 2 لأنه يحافظ على دقة نتائج البحث مع توفير طريقة للمستخدمين، الذين يعرفون ما يبحثون عنه، للانتقال إلى المنشور الأول من نتائج البحث.
الفكرة هي أننا سنقوم بإجراء تغييرات على تجربة المستخدم (UX) لجعل هذا الأمر واضحاً.
الفكرة سليمة، لكنني لا أعتقد أنه يمكننا تنفيذ استعلام بحث PostgreSQL بكفاءة، حيث لا يوجد دعم للفهرسة عند محاولة المطابقة باستخدام مشغلي like و ilike. عامل آخر يجب أخذه في الاعتبار هو عدم وجود طريقة لترتيب نتائج المطابقة التامة أو المطابقة الجزئية. وهذا هو السبب في أننا نعتمد على إمكانيات البحث النصي الكامل التي يوفرها PostgreSQL.
أعتقد أنك ستحتاج على الأرجح إلى طريقة أكثر وضوحًا للتمييز بين روابط المنشور الأول والمنشور المطابق. لا أعتقد أن ما تقترحه سيكون بديهيًا. (لكنني أفهم أن هذا كان مجرد مثال.)
فكرة خطرت لي هي عرض جميع المنشورات المطابقة من موضوع ما، ربما باستخدام آلية من نوع “توسيع/طي”. لذا، ستعرض المنشور الأكثر توافقًا من جميع المواضيع المطابقة بشكل مشابه للعرض الحالي، ولكن سيكون هناك سهم أو شيء مشابه بجانب كل موضوع مطابق لتوسيع القائمة وعرض جميع المنشورات المطابقة في ذلك الموضوع. قد يكون ذلك مبالغًا فيه، لا أدري.
أعتقد أن هذا يستحق التجربة بالتأكيد. سيحل هذه المشكلة التي كنت أشكو منها من خلال إعطاء الأولوية لمطابقات العناوين. لكنه سيحل أيضًا السيناريو الذي أشرت إليه بخصوص منتديات البرمجة @tgxworld، حيث، كما قلت، لن تكون مقتطفات الكود موجودة في العنوان.
بالطبع، إذا كان الأمر غير عملي، فأعتقد أن القصة تختلف. ربما يعرف شخص آخر طريقة لجعله ذا أداء كافٍ.
الاعتماد على التكنولوجيا الحالية أمر رائع، ولكن فقط عندما يحل مشكلة الاستخدام الخاصة بك بشكل صحيح. يبدو أن البحث النصي الكامل في Postgres غير كافٍ بمفرده نظرًا للمشكلات المطروحة في هذا الموضوع. يبدو أن نهجًا هجينًا مثل ما اقترحه @Sailsman63 سيكون مثاليًا، إذا وجدت طريقة لجعله مجديًا.
بما أنه يبدو أنه لا توجد “إجابة سهلة” في الوقت الحالي، فأنا أعتقد بصدق أن هذا هو الخيار الأفضل بينما يتم العمل على حل أكثر اكتمالاً. أي تغيير في تجربة المستخدم أو خوارزمية جديدة تتطلب تحسينات قاعدة بيانات أو اعتبارات أداء أخرى قد تستغرق وقتًا طويلاً لتعمل بشكل صحيح، لذا أعتقد أن العودة إلى السلوك القديم ستكون معقولة كحل مؤقت.
لسوء الحظ، الأمر ليس بسيطًا بقدر القول إننا سننتقل إلى شيء أفضل لنا. لدينا مقايضات من وجهتي نظر الأعمال والتقنية يجب مراعاتها قبل التوصل إلى قرارنا الخاص.
أتردد في فعل ذلك لأنه لا ينقلنا إلى الأمام نحو حل أفضل. في الواقع، أشعر بقوة أن السلوك القديم غير صحيح. الحالات التي تم وصفها في هذا الموضوع تستند إلى حالة واحدة فقط حيث يبدو من البديهي أن تؤدي نتيجة البحث إلى الرابط إلى المنشور الأول فقط لأن المستخدم الذي يبحث يعرف بالضبط الموضوع الذي يريد البحث عنه. سأذهب إلى حد القول بأن المستخدمين الذين يعرفون بالفعل عنوان الموضوع الذي يبحثون عنه يجب أن يستخدموا فلتر البحث المتقدم in:title. في معظم حالات البحث، محتوى المنشور مهم للغاية، ولا يجب أن يعني التطابق الجزئي مع عنوان الموضوع أن يُعرض المنشور الأول للموضوع.
ربما يكون ذلك كافيًا إذا كان البحث المتقدم أبسط. شخصيًا، أجد أنه صعب الاستخدام للغاية لأن هناك خيارات كثيرة جدًا، مما يجعل من الصعب العثور على الخيار الذي أحتاجه. ربما يكون الأمر خاصًا بي فقط
ربما يكون من المناسب جعل مربع الاختيار in:title مرئيًا دائمًا. أو الأفضل من ذلك، ربما يكون من المنطقي إضافة قائمة منسدلة على يسار مربع الإدخال تحتوي على خيارات مثل “الكل”، “العناوين”، و"المشاركات"، للسماح للمستخدم بتحديد نطاق البحث. أعتقد أن هذا النوع من فلاتر البحث شائع نسبيًا، لذا سيكون (نأمل) بديهيًا للمستخدمين لاستخدامه أو تجاهله حسب رغبتهم. كمثال مقارن، يسمح لك موقع IMDb بالبحث في “الكل”، “العناوين”، “الممثلين”، إلخ. (لا أتذكر الخيارات الدقيقة في الذاكرة). ستحتاج إلى إيجاد طريقة للتمييز بين “الكل” و"المشاركات" لأنهما عمليًا نفس الشيء حاليًا، لكن ربما تكون هذه الطريقة جديرة بالنظر فيها.
سأحتاج إلى التوضيح مع @sam بشأن هذا الأمر، لأن هذا هو الطريقة التي تم بها بناء فهرس البحث لدينا دائمًا. في الواقع، يتضمن فهرس البحث لكل منشور العنوان واسم الفئة بالإضافة إلى أسماء الوسوم، حتى لو لم يكن المنشور هو المنشور الأول.