سؤال

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

على سبيل المثال: إذا قمنا بفهرسة "Hello ، John" ، فلن يتم العثور على الأصل بواسطة الكلمة الرئيسية "Hello" بينما لن تكون هناك مشكلة إذا أزلنا الفاصلة بعد كلمة "Hello".

هل هناك أي filterfactory يفترض أن تجريد علامات الترقيم؟ أيه أفكار؟

شكرا ، بوجدان.

لا يوجد حل صحيح

نصائح أخرى

يمكنك استخدام ال solr.PatternReplaceFilterFactory لتجريد البدء والتخلي عن علامات الترقيم مع هذا:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^\p{Punct}*(.*?)\p{Punct}*$"
    replacement="$1"/>

وإذا كنت ترغب في تجريد كل علامات الترقيم في البداية والنهاية ، باستثناء (على سبيل المثال) التوقيع الدولار أمام كلمة ما ، يمكنك استخدام هذا:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$"
    replacement="$1"/>

يتم ذلك مع WordDelimiterFilterFactory. تعيين ceneratewordparts = 1.

هناك أيضا patterntokenizerfactory يمكن استخدام ذلك ، لكنني لم أجربه أبدًا.

استخدام patternreplacefilterfactory

<!-- remove punctuation -->
    <filter class="solr.PatternReplaceFilterFactory" pattern="^(\p{Punct}*)(.*?)(\p{Punct}*)$" replacement="$2"/>
    <filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>

...

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