除非单词是邻居,否则Solr阿拉伯语搜索不起作用



到目前为止,我对一组阿拉伯语数据的solr部署工作得很好。词干和正常化都非常棒。

现在的问题是,除非单词都形成一个连续的阶段,否则阿拉伯语搜索不起作用。例如,让我们说以下短语:

ابي

工作得很好,给了我想要的数据。但是,如果我搜索:

ابيي

然后我得到0个结果。请注意,第二行只是缺少上面一行中的一个单词。

即使单词在文本中没有并排出现,我也应该能够得到结果。

任何想法都将不胜感激。我的模式如下:

<fieldType name="text_general_arabic" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="arabic_stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.ArabicNormalizationFilterFactory"/>
    <filter class="solr.ArabicStemFilterFactory"/>    
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="arabic_stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.ArabicNormalizationFilterFactory"/>
    <filter class="solr.ArabicStemFilterFactory"/>    
  </analyzer>
</fieldType>

尝试使用dismax而不是solr常规布尔查询,它提供了u短语搜索和跨字段搜索,因为u进行短语查询。

示例:

q=أح;wt=json&indent=true&defType=edismax&qf=title_ar+title_en+title&mm=70%25&stopwwords=true&lowercaseOperators=真实

正如你在回复中看到的那样,我得到了匹配,但不是完全匹配,检查上面的表达式,你会看到mm("最小匹配")被设置为70%意味着70%的短语应该匹配。有关详细信息,请参阅(https://wiki.apache.org/solr/ExtendedDisMax)上述查询的结果是:

{"responseHeader":{"状态":0,"QTime":1,"params":{"lowercaseOperators":"true","mm":"70%","indent":"true","uf":"title_ar title_en title","q":"أ1581;مد","qf":"title_ar title_en title","_":"1393151025195","停止语":"true","wt":"json","defType":"edismax"}},"响应":{"numFound":1,"开始":0,"文档":[{"id":"1","title":["艾哈迈德是受欢迎的艺术家"],"title_en":["艾哈迈德是受欢迎的艺术家"],"title_ar":["],"版本":1460824159992938500}]}}

最新更新