我正在使用Solr索引3个语言(阿拉伯语,法语和英语)中的文档,我使用了这个fieldType:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
一切都很好,但是当我把这个请求用来搜索像حقل
这样的单词时,用阿拉伯语来说,Solr找不到这个单词,但当我把这个单词放在左边的لقح
对面时对Solr找到单词并返回结果。
我可以得到阿拉伯语单词的结果吗?
答案 0 :(得分:5)
我将把丹尼尔的聪明分析转变为记录的答案。不要为此投票,只需去寻找他投票的东西: - )
有两种方法可以使方向性与RTL文本不匹配。您可以向后索引它,或者您可以向后查询它。查询Solr的简单HTML表单永远不会弄乱方向性。在这种护理中,khaled正在使用一个PDF文件从PDF中提取文本,该文件库成为PDF文件包含“视觉顺序”文本而不是“逻辑顺序”的倾向的受害者。因此索引充满了向后的阿拉伯语。要解决这个问题,他必须提出一个可以从pdfs中提取文本的工作库。
强制Apache Tika使用最新的Apache PDFbox可能有所帮助,或者他的PDF可能如此古怪,即使最新的PDFBox也无法处理它。在这种情况下,他有一个难题。