كيفية فرض المطابقات التامة عند البحث

لاحظت أنه في بعض عمليات البحث، لا أحصل على أي نتائج:

ولكن إذا قمت بتضييق نطاق البحث، على سبيل المثال إلى موضوع محدد، أحصل على النتيجة التي أبحث عنها:

في البداية، اعتقدت أن الأمر قد يكون مرتبطًا بحرف مشدد، لكنني أجريت عدة اختبارات وتكرر نفس الأمر مع الأحرف غير المشددة.

كانت فكرتي الثانية أن السبب قد يكون في كلمات التوقف، لكنني عدلت ملف app.yml لـ تقصير قاموس كلمات التوقف الإسبانية:

ls -l /usr/share/postgresql/13/tsearch_data/spanish.stop
-rw-r--r-- 1 root root 0 May 12 06:37 /usr/share/postgresql/13/tsearch_data/spanish.stop
                       ☝️

هل توجد إعدادات يمكنني تعديلها لضمان العثور دائمًا على التطابقات التامة؟

مرحبًا @Nacho_Caballero

هل يمكنك تزويدي بنص عينة ومصطلح بحث يُعيد إنتاج المشكلة؟ أستطيع رؤيتها في الصورة، لكن يمكنني رؤية مقتطف فقط.

شكرًا لك، آلان.

إليك محتوى ذلك المنشور المحدد:

في الواقع، لا يُستخدم بعد “أعتقد أن” لأن ما تؤكده أنك تعتقده يُعد حقيقة واقعة وليس مجرد احتمال.

من ناحية أخرى، نستخدم صيغة المخاطب (المنصوب) عندما نستخدم نفس البنية ولكن بشكل سلبي: “لا أعتقد أن هناك الكثير من الناس في السوق اليوم”.

آمل أن يكون هذا قد أجاب على سؤالك، ولكن إذا كنت بحاجة إلى مزيد من التفاصيل، فالرجاء إخباري وسأساعدك بكل سرور.

تحياتي! :smiley:

ومع ذلك، لإعادة إنتاج هذا السلوك هنا، ستحتاج إلى تعيين اللغة المحلية إلى الإسبانية وتقصير القاموس :sweat_smile:

لقد اختبرت ذلك على موقع Discourse تطويري أديره محليًا، ولم أستطع إعادة إنتاج السلوك، لكنني أعتقد أن السبب هو أن الموقع فارغ عمليًا. لا أعتقد أن هذه المشكلة تظهر إلا عند وجود عدد كبير من المنشورات (لدي حاليًا حوالي 68 ألف منشور).

يمكنني تجربة أشياء أخرى تتعلق بقاموس postgres، لكنني لست متأكدًا من كيفية الدخول إلى صورة docker الخاصة بي عند تثبيت نسخة التطوير. هل هناك ما يعادل launcher enter app؟

من المثالي أن يكون هناك طريقة لتجاهل كلمات التوقف. على سبيل المثال، للبحث عن هذه الجملة في رسالتك:

@Nacho_Caballero، مرحبًا، هل يمكنك إخباري بخوارزمية البحث التي يستخدمها Discourse حاليًا؟ سيساعدني ذلك في التحقيق في المشكلة.

شكرًا لك، ياشي.

أفترض أن Discourse تستخدم خوارزمية البحث النصي التلقائي الافتراضية في Postgres. أعتقد أن الطريقة الوحيدة لتوفير مطابقات دقيقة عند استخدام علامات الاقتباس (بدون اشتقاق الكلمات وبدون تجاهل كلمات التوقف) هي استخدام قاموس ‘بسيط’ :thinking:

شكرًا لك، @Nacho_Caballero.

سأراجع خوارزمية البحث النصي الكامل في Postgres.

هل من الممكن البحث عن تطابق تام؟

مثال:

في الوقت الحالي، يؤدي البحث عن “flow” للأسف إلى ظهور كلمة “flower” كأعلى نتيجة من حيث الأهمية..

حاول البحث باستخدام علامات الاقتباس، على سبيل المثال، ابحث عن “التدفق” وليس التدفق.