ترتيب نتائج بحث SharePoint حسب المزيد من الأعمدة

StackOverflow https://stackoverflow.com/questions/91800

  •  01-07-2019
  •  | 
  •  

سؤال

أنا أستخدم FullTextSqlQuery في SharePoint 2007 (MOSS) وأحتاج إلى ترتيب النتائج حسب عمودين:

SELECT WorkId FROM SCOPE() ORDER BY Author ASC, Rank DESC

ومع ذلك، يبدو أنه يتم أخذ العمود الأول فقط من ORDER BY في الاعتبار عند إرجاع النتائج.في هذه الحالة، يتم ترتيب النتائج بشكل صحيح حسب المؤلف، وليس حسب الرتبة.إذا قمت بتغيير الترتيب، فسيتم ترتيب النتائج حسب الرتبة، وليس حسب المؤلف.

اضطررت إلى اللجوء إلى فرز النتائج الخاص بي، وهو ما لا يعجبني كثيرًا.هل لدى أحد حل لهذا؟

يحرر:لسوء الحظ، لا يقبل أيضًا التعبيرات الموجودة في عبارة ORDER BY (يطرح SharePoint استثناءً).أعتقد أنه حتى لو كان الاستعلام يبدو وكأنه SQL شرعي، فسيتم تحليله بطريقة ما قبل تقديمه إلى خادم SQL.

لقد حاولت التقاط الاستعلام باستخدام ملف تعريف SQL، ولكن دون جدوى.

تحرير 2:في النهاية استخدمت الترتيب حسب عمود واحد (المؤلف في حالتي، لأنه الأكثر أهمية) وقمت بالترتيب الثاني في الكود في TOP N من النتائج.يعمل بشكل جيد بما فيه الكفاية للمشروع، لكنه يترك شعورًا سيئًا بالكود المبتذل.

هل كانت مفيدة؟

المحلول

مايكروسوفت أخيراً نشرت مقالة قاعدة المعرفة حول هذه المشكلة.

"عند استخدام RANK في عبارة ORDER BY لاستعلام بحث SharePoint، يجب عدم استخدام أي خصائص أخرى"

http://support.microsoft.com/kb/970830

علامة مرض:عند استخدام RANK في جملة ORDER BY لاستعلام SharePoint Search، يتم استخدام العمود ORDER BY الأول فقط في النتائج.

سبب:RANK هي خاصية خاصة تم تصنيفها في فهرس النص الكامل وبالتالي لا يمكن استخدامها مع الخصائص المُدارة الأخرى.

دقة:لا تستخدم خصائص متعددة بالتزامن مع خاصية RANK.

نصائح أخرى

الرتبة عبارة عن عمود خاص في MOSS FullTextSqlQuery يعطي قيمة رقمية لرتبة كل نتيجة.ستكون هذه القيمة مختلفة لكل استعلام، وهي كذلك نسبي إلى النتائج الأخرى لهذا الاستعلام بالذات.نظرًا لهذا الترتيب، يجب أن يكون لكل نتيجة قيمة فريدة، وسيكون الفرز حسب الرتبة ثم المؤلف هو نفسه مجرد الفرز حسب الرتبة.سأحاول الفرز في عمود آخر بدلاً من التصنيف لمعرفة ما إذا كانت النتائج ستعود كما تتوقع، إذا كان الأمر كذلك، فقد تكون مشكلتك مرتبطة بالطريقة التي يقوم بها MOSS بترتيب النتائج، والتي ستختلف لكل استعلام فريد.

أنت على حق أيضًا، يبدو الاستعلام مثل SQL، ولكنه ليس الاستعلام الذي تم تمريره بالفعل إلى خادم SQL، بل هو بناء جملة استعلام Microsoft Enterprise Search SQL خاص.

أنا أيضًا أواجه نفس المشكلة مع FullTextSqlQuery وMOSS 2007 حيث يتم احترام العمود الأول فقط في "ORDER BY" متعدد الأعمدة.

لقد قمت بإدخال هذا الموضوع في منتديات MSDN لبحث SharePoint، ولكن لم أتلق أي ردود:

http://social.msdn.microsoft.com/Forums/en-US/sharepointsearch/thread/489b4f29-4155-4c3b-b493-b2fad687ee56

ليس لدي أي خبرة في SharePoint، ولكن إذا كانت هذه هي الحالة التي يتم فيها احترام عبارة ORDER BY واحدة فقط، فسأغيرها إلى تعبير بدلاً من عمود.بافتراض أن "الرتبة" عبارة عن عمود رقمي بقيمة قصوى تبلغ 10، فقد ينجح ما يلي:

SELECT WorkId FROM SCOPE() ORDER BY AUTHOR + (10 - Rank) ASC
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top