تقييم الاستعلام المتداخل لوكين فيما يتعلق بالنفي

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

سؤال

أنا أضيف أباتشي لوسين دعم ل QueryDSL (الذي يوفر استفسارات آمنة من نوع Java) ، وأواجه مشاكل في فهم كيفية قيام Lucene بتقييم الاستعلامات خاصة فيما يتعلق بالنفي في الاستفسارات المتداخلة.

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

+year:1990 -title:"Jurassic Park"
+year:1990 +(-title:"Jurassic Park")

يظهر أدناه شجرة الكائن المبسطة في المثال الثاني.

query : Query
  clauses : ArrayList
    [0] : BooleanClause
      "MUST" occur : BooleanClause.Occur
      "year:1990" query : TermQuery
    [1] : BooleanClause
      "MUST" occur : BooleanClause.Occur
      query : BooleanQuery
        clauses : ArrayList
          [0] : BooleanClause
            "MUST_NOT" occur : BooleanClause.Occur
            "title:"Jurassic Park"" query : TermQuery

لوكين QueryParser يبدو أن تقييم "AND (NOT" في نفس النوع من أشجار الكائن.

هل هذا خطأ في لوسين أم أساءت فهم تقييم استعلام لوكين؟ يسعدني تقديم المزيد من المعلومات إذا لزم الأمر.

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

المحلول

هم ليسوا نفس الشيء.

في

+year:1990 +(-title:"Jurassic Park")

لديك مسافة فرعية لا تحتوي إلا على جملة واحدة. ما يحدث هو أن لورين تقوم بتقييم

-title:"Jurassic Park"

بند وهو يعيد 0 مستندات. ثم تشير إلى أن الاستماع الفرعي يجب أن يحدث ، ولأنه يعود مستندات صفر ، فإنه ينفي بقية الاستعلام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top