مقتطفات البحث الصينية تبدو معطلة

عند محاولة البحث عن محتوى صيني في منتداي، أرى أن نتائج البحث تُرجع جملًا مقطعة، مع غياب علامات الترقيم، ومسافات بيضاء غير متوقعة بين الكلمات، بالإضافة إلى اختفاء بعض الكلمات.

على سبيل المثال، جربت البحث عن 管理员، وكانت الجملة الأصلية هي:

管理人员可见的分类。只有管理员和版主才能阅览主题

لكن ما ظهر في نتائج البحث يبدو كالتالي:

كما ترون، كلمة 可见的 مفقودة، وعلامة النقطة مفقودة أيضًا، مما يجعل الجملة غير مكتملة. ثم اختفت أيضًا الكلمات 只有 و و و 才能. كما توجد مسافات بيضاء غير متوقعة بينها.

هل يمكن لأحد مساعدتي في حل هذه المشكلة؟ شكرًا لكم

إعجابَين (2)

يبدو أن تلك الأحرف المفقودة تُعتبر كلمات توقف في اللغة الصينية

(byebug) data = CppjiebaRb.segment(search_data, mode: mode)
["管理人员", "可见", "的", "分类", "。", "只有", "管理员", "和", "版主", "才能", "阅览", "主题"]
(byebug) CppjiebaRb.filter_stop_word(data)
["管理人员", "分类", "管理员", "版主", "阅览", "主题"]
3 إعجابات

انتظر، هل الخطأ هنا هو أن “الملخص” في النتيجة يبدو غريبًا؟ وليس أن هناك مشكلة وظيفية فعلية في البحث؟

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

3 إعجابات

شكرًا لك على التحقق من هذا.

هذا ليس كلمة توقف في اللغة الصينية، بل هو صفة تعني “مرئي”.

هل من الممكن إصلاح هذه المشكلة؟ (بما في ذلك جميع العناصر في نتائج البحث) أم أن هناك أي حل بديل متاح؟

شكرًا لك.

إعجاب واحد (1)

كلمات التوقف هي كلمات شائعة جدًا وتؤثر سلبًا على أداء البحث

على سبيل المثال، كلمة “And” في اللغة الإنجليزية تُعد من كلمات التوقف

يمكن حل هذه المشكلة، وسيستغرق الأمر بضعة أشهر للوصول إلى الحل. وفي غضون ذلك، إذا كنت بحاجة إلى إصلاح سريع، يمكنك الرجوع إلى Marketplace

تمت الإشارة إليها بـ pr-welcome

إعجابَين (2)

يتم تحديد كلمات التوقف باستخدام GitHub - yanyiwu/cppjieba: "结巴"中文分词的C++版本 · GitHub. مع التغييرات الأخيرة في طريقة عرض مقتطفات البحث، يجب علينا ببساطة إزالة السطر التالي لأنه يتعارض مع بيانات البحث الفعلية.

على أي حال، دعم البحث للغة الصينية لدينا ليس ممتازًا، ولكن هناك إضافات لـ PostgreSQL قد نرغب في النظر فيها لتمكيننا من دعم اللغات التي لا تتوفر لها دعم أصلي بشكل صحيح. ربما https://pgroonga.github.io/؟

5 إعجابات

شكرًا! دعني أجرب هذا وأرى كيف تسير الأمور.

@tgxworld لست متأكداً من فهمي الصحيح، فـ PGroonga لا يدعم اللغتين الصينية واليابانية. في https://pgroonga.github.io/،

يدعم PostgreSQL البحث النصي الكامل للغات التي تستخدم الأحرف الأبجدية والأرقام فقط. وهذا يعني أن PostgreSQL لا يدعم البحث النصي الكامل للغات مثل اليابانية والصينية وما إلى ذلك. يمكنك استخدام ميزة البحث النصي الكامل فائقة السرعة لجميع اللغات من خلال تثبيت PGroonga في PostgreSQL!

@tgxworld لقد قمت بإنشاء طلب سحب (PR) بناءً على اقتراحك FIX: keep chinese stopwords on search by t0t07 · Pull Request #11530 · discourse/discourse · GitHub

المعنى هو عكس ذلك تمامًا. لا يدعم PostgreSQL العادي اللغتين الصينية واليابانية. أما PGroonga فيضيف دعمًا لتلك اللغات.

3 إعجابات

بالمناسبة @riking، للتأكيد فقط، هل يستخدم discourse حاليًا بحث النص الكامل عبر دوال PostgreSQL المدمجة كما هو موضح في discourse/lib/search.rb at 1cf057fb1c4e168ce441ddde918636725abeb668 · discourse/discourse · GitHub

هل هذا صحيح؟

إعجاب واحد (1)

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

إعجاب واحد (1)

@tgxworld لا أفهم الفرق بين بيانات البحث واستعلام البحث. هل يمكنك تقديم المزيد من التفاصيل؟ شكراً

إذا أضفنا كلمات التوقف إلى الفهرس، فإن ذلك يؤدي إلى تضخمه ويؤثر سلبًا على أداء البحث

يوجد عمودان نقوم بتخزينهما في جدول PostSearchData، حيث يُستخدم #search_data عند الاستعلام مقابل مصطلحات البحث. أما #raw_data فهو ما نستخدمه عند عرض مقتطف البحث. يجب أن يتمثل الإصلاح هنا في عدم إزالة كلمات التوقف الصينية من #raw_data بينما تُزال من #search_data.

هل هناك أي تقدم في إصلاح هذه الأخطاء؟

ظننت أنني قمت ببعض التغييرات هنا:

هل لغة موقعك مضبوطة على zh_TW أو zh_CN أو ja؟ إذا لم تكن كذلك، فهل تم تعيين search_tokenize_chinese_japanese_korean إلى true؟

لدينا تجاوز هنا:

إعجابَين (2)