我们有一个目前仅使用英语的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文件尝试相同的操作时,它正在工作
答案 0 :(得分:0)
首先,如果可能,我建议您将所有字段名称更改为英文。它避免了一些混乱。您也可以考虑遵循this answer中有关不同语言的相同数据的字段命名的建议。
CSVLoaderBase::load() function使用了封面下的Java BufferedLoader()类,并没有指定编码。我猜测默认编码可能与阿拉伯语不兼容,如this question中所述。
在Solr 4.0中,schema.xml附带了每种语言的预定义字段类型。更多特定于语言的信息为here。我认为所有这些过滤器也可用于3.6。 Solr4 schema.xml示例为here。