0

我们有一个 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"/>

仅供参考,我从浏览器中的谷歌翻译复制了阿拉伯语文本并粘贴了它

后来我使用记事本作为 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 文件尝试同样的事情时,它正在工作

4

1 回答 1

0

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

CSVLoaderBase::load() 函数在后台 使用 Java BufferedLoader() 类,并且没有指定编码。我猜默认编码可能与此问题中所述的阿拉伯语不兼容。

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

于 2012-12-21T07:41:21.143 回答