如何在solr中搜索阿拉伯语单词

时间:2017-01-29 18:17:46

标签: search solr arabic-support

在我的solr schema.xml中,我定义了产品阿拉伯名称字段,如下所示

<field name="productNameArabic" type="text_ar" indexed="true" stored="true"/>
  <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" />
        <filter class="solr.ArabicNormalizationFilterFactory"/>
        <filter class="solr.ArabicStemFilterFactory"/>
      </analyzer>
    </fieldType>

在solr搜索中,我想使用阿拉伯字母搜索产品名称。在搜索时,阿拉伯语用户可以感觉很少默认搜索某些产品名称。因为搜索时需要提一些字符。

Ex:إأ

在上述字符中,用户可以获得shift键的组合。通常,如果阿拉伯语的人会提到“ا”字符并且会得到以下组合词。

Ex:إبرا

在我的solr schema.xml中,我定义了产品阿拉伯名称字段,如下所示

1 个答案:

答案 0 :(得分:0)

我能够通过添加ASCIIFoldingFilter来实现所需的功能,此过滤器可以删除不同语言的重音,使其在索引时间内相似。

<fieldType name="arabic" class="solr.TextField" positionIncrementGap="100">
            <analyzer>
                <tokenizer class="solr.StandardTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.ASCIIFoldingFilterFactory"/>
                <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" />
                <filter class="solr.ArabicNormalizationFilterFactory"/>
                <filter class="solr.ArabicStemFilterFactory"/>
            </analyzer>
</fieldType>

有关此过滤器的更多信息 - here。工作代码示例 - here