Solr索引和搜索阿拉伯语内容

时间:2012-12-21 07:06:02

标签: csv solr lucene notepad

我们有一个目前仅使用英语的solr构建我们需要添加阿拉伯语支持,Solr Wiki中没有太多关于如何开始的详细信息

这些是我做过的以下步骤

schema.xml

中添加了以下内容
<fieldType name="text_general_arabic" class="solr.TextField"     positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ArabicNormalizationFilterFactory"/>
<filter class="solr.ArabicStemFilterFactory"/>    
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ArabicNormalizationFilterFactory"/>
<filter class="solr.ArabicStemFilterFactory"/>    
</analyzer>
</fieldType>

Schema.xml

中定义了一个字段
<field name="البرتغالية" type="text_general_arabic" indexed="true" stored="true"/>

仅供参考我在浏览器中复制谷歌翻译中的阿拉伯语文本并将其粘贴

后来我使用notepad作为unicode文件创建了一个csv文件,并将其保存为Arabic.csv,其字段名称为

البرتغالية

当我尝试使用以下cURL命令索引文件时

D:\>curl http://localhost:8080/solr/coll9/update/csv -F "stream.file=D:\Arabic.csv" -F   "commit=true" -F "optimize=true"
-F "encapsulate="" -F "keepEmpty=true"

我得到一个未定义的字段错误我不知道我在哪里做错了

更新:当我使用XML文件而不是csv文件尝试相同的操作时,它正在工作

1 个答案:

答案 0 :(得分:0)

首先,如果可能,我建议您将所有字段名称更改为英文。它避免了一些混乱。您也可以考虑遵循this answer中有关不同语言的相同数据的字段命名的建议。

CSVLoaderBase::load() function使用了封面下的Java BufferedLoader()类,并没有指定编码。我猜测默认编码可能与阿拉伯语不兼容,如this question中所述。

在Solr 4.0中,schema.xml附带了每种语言的预定义字段类型。更多特定于语言的信息为here。我认为所有这些过滤器也可用于3.6。 Solr4 schema.xml示例为here