سؤال

أنا أستخدم Faceting Solr واجهت مشكلة كنت آمل أن أتمكن من الوصول باستخدام المرشحات.

أساسا في بعض الأحيان سوف يأتي اسم المدينة إلى سولل

"كامبريدج"

وفي وقت ما سوف يأتي كما

"كامبريدج"

أردت استخدام عامل تصفية في Solr لإيقاف إصدار قبعات الصراخ من اسم المدينة. يبدو أن هناك معطفا لجعل كل النص أحرف صغيرة.

<!-- A text field that only sorts out casing for faceting -->
    <fieldType name="text_facet" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

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

  • كامبريدج >> كامبريدج
  • كينغستون عند هال >> كينغستون عند هال

إلخ

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

شكرا

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

المحلول

AFAIK لا يوجد مرشح مدمج من هذا القبيل. إذا كنت تريد أن تكتبها، انظر lowercasefiltractory. و LowerCaseFilter. للإشارة، لا يبدو أن الأمر صعب للغاية.

أو يمكنك القيام بهذا الجانب العميل، أي في Solrnet، يمكنك كتابة ديكور Openroperations تقوم بالتحولات اللازمة بعد الاستعلام الحقيقي، باستخدام totitlecase..

نصائح أخرى

ربما يمكنك الاستفادة من solr.patternreplacecharfiltory؟

<fieldType name="textCharNorm" class="solr.TextField">
  <analyzer>
    <filter class="solr.LowerCaseFilterFactory"/>
    <charFilter class="solr.PatternReplaceCharFilterFactory"
                pattern="([^\s]{1})([^\s]*)" replaceWith="\U$1\L$2"/>
  </analyzer>
</fieldType>

لاحظ، لم أختبر الرمز أو solr.patternreplacecharfiltory، لذلك لست متأكدا مما إذا كان يعمل. إذا كنت بحاجة إلى إنشاء فلتر خاص بك قد يكون هذا الدليل مفيدا:

http://robotlibrarian.billdueber.com/building-a-solr-text-filter-for-normalizing-data/

// يوحنا

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