المؤسسة العامة: استخدام fragmenter التعبيرات المنتظمة لاستخراج الفقرات

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

  •  21-08-2019
  •  | 
  •  

سؤال

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

وأنا أحاول أن استخدام fragmenter التعابير المنطقية وأواجه صعوبة في الحصول على النتائج التي أريدها. واني اسعى للحصول على شظايا التي تبدأ طابعا كلمة وتنتهي في علامات الترقيم، ولكن لسبب شظايا يجري عاد لي يبدو أن تكون مرنة جدا، على الرغم من أنني قد قدمت اندلق كبير. وفيما يلي المعلمات ذات الصلة أنا باستخدام، ربما شخص ما يمكن أن يساعد نشير إلى حيث كنت قد ذهبت خطأ:

<str name="hl.fragsize">500</str>
<str name="hl.fragmenter">regex</str>
<str name="hl.regex.slop">0.8</str>
<str name="hl.regex.pattern">[\w].*{400,600}[.!?]</str>
<str name="hl">true</str>
<str name="q">chinese</str>

وهذا يجب أن يكون مطابقة بين 400-600 الشخصيات، بدءا من شخصية كلمة وتنتهي مع أحد.!؟. هنا مثال على نتيجة النموذجية:

<اقتباس فقرة>   

و. تحقق من هذه الصور بها. تسعة الباندا   اشبال على الشاشة للمرة الأولى   الخميس في جنوب غرب الصين. هم   أقل من سنة من العمر. انهم فقط   توقفت مؤخرا التمريض. هناك   فقط 1600 من هؤلاء الرجال غادر في   الغابات الجبلية في وسط الصين،   120 آخر في تربية الصينية   مرافق وحدائق الحيوان. وانهم حول   20 الذين يعيشون خارج الصين في حدائق الحيوان.   وجدت بشكل كامل تقريبا على الخيزران.   ويمكن أن تعيش من 30 سنة. و   وهؤلاء الرجال قليلا الحصول في نهاية المطاف   أكبر بكثير. أنها سوف تنمو

وكما ترون، أنه بدءا من فترة وتنتهي في حرف كلمة! انها تقريبا كما لو شظايا ومجرد الخروج لأنها سوف والتعبير المعتاد لا تفعل أي شيء على الإطلاق، ولكن النتائج مختلفة عندما استعمل fragmenter الفجوة. في النتيجة أعلاه لا أرى أي سبب لذلك لا ينبغي أن يكون تجريده من الفترة السابقة والكلمات الماضيين، وهناك الكثير من الغرفة في اندلق وفي نمط رجإكس. الرجاء مساعدتي معرفة ما أفعله خطأ ...

وشكرا جزيلا

الأقسام

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

المحلول

وجرب:

\w[^\.!\?]{400,600}[\.!\?]

ويجب أن لا تحتاج أول قوسين معقوفين حول \w

ويجب أن الهروب من نقطة النهائية.

وأنا لا أعتقد .* قبل محدد الكمية ({400,600}) وآخر هو فكرة جيدة، وبالتالي .{400,600}

ومنذ ? هو حرف خاص في التعابير المنطقية، كما يجب عليك الخروج منه.

ومنذ . مباريات أي شيء، يجب أن تستخدم بدلا [^\.!\?] من أجل تطابق أي شيء <م> لكن شخصيات نهاية الخاص بك.

نصائح أخرى

ولقد سمعت أبدا من أداة كنت تعمل مع (المؤسسة العامة)، ولكن محددو الكمية في التعبير العادية مخطئون بالتأكيد. هذا وسوف التعابير المنطقية تطابق بين 402 و 602 حرفا، حيث أول حرف كلمة، وآخر هو واحد من ثلاثة أحرف علامات الترقيم:

\w.{400,600}[.!?]

والنقطة وعلامة استفهام ليست الأحرف الخاصة داخل فئة الطابع، لذلك ليس هناك نقطة الهروب منها. \ ث يمكن أن يقف من تلقاء نفسها.

ومنذ النقطة مباريات أيضا علامات الترقيم 3، والتعابير المنطقية بك تطابق العديد من الشخصيات ممكن (إلى 602)، ومن ثم إعطاء الظهر للتأكد من آخر واحد هو واحد من شخصياتك علامات الترقيم 3.

إذا كنت ترغب في تحديد أولويات أشواط أقصر، واستخدام محدد الكمية كسول:

\w.{400,600}?[.!?]

إذا كنت تريد التعابير المنطقية لمباراة جملة واحدة فقط، واستخدام فئة حرف انتفى:

\w[^.!?]{400,600}[.!?]

وكل ما سبق يفترض أن يستخدم المؤسسة العامة على غرار بيرل التعابير العادية. أشياء مثل \ ث و {400600} لا تعمل في جميع النكهات التعبير العادي.

ويبدو أن هناك مشكلة إذا كنت تستخدم WordDelimiterFilterFactory. يتم وصف المشكلة هنا HTTP: //www.mail- archive.com/solr-user@lucene.apache.org/msg30631.html

وكما هو موضح في الرابط أعلاه، قد يكون حل واحد لإضافة preserveOriginal="1" إلى WordDelimiterFilterFactory الخاص بك. حاولت ذلك، وأنها عملت لي. ومع ذلك، (كونها جديدة إلى المؤسسة العامة) أنا لا أعرف ما إذا كانت هناك أي عيوب لهذا النهج (بصرف النظر عن زيادة حجم قياسي).

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