Solr查询欧洲角色(Beklædning)

时间:2012-10-05 15:57:45

标签: encoding solr

在solr查询搜索中

搜索

q=*%3A*&fq=grand_cat_str%3ABeklædning

Solr会将fq读作:<str name="fq">grand_cat_str:Beklædning</str>

并且不返回任何结果。对Bekl * dning进行野外搜索会返回正确的结果。

[编辑] 我添加了

    <fieldType name="string" class="solr.StrField" sortMissingLast="true" >
 <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.ASCIIFoldingFilterFactory"/>
 </analyzer>

</fieldType>

但收到了错误:

<org.apache.solr.common.SolrException: FieldType: StrField (string) does not support specifying an analyzer

3 个答案:

答案 0 :(得分:0)

这与Solr如何处理不在前127个ASCII字符集中的字符有关。最好的建议是将ASCIIFoldingFilterFactory分析器添加到架构中的字段grand_cat_str

如果您需要有关添加分析仪的指导,请参考Specifying an Analyzer in the Schema

答案 1 :(得分:0)

如果他的语料库中的大多数文档都使用相同的语言(Dannish?)那么应用ASCIIFoldingFilterFactory很可能是一个不好的选择,取决于用户应该如何输入他们的查询。

您是否尝试过编码查询?

q=*%3A*&fq=grand_cat_str%3ABekl%C3%A6dning

应该可以正常工作

答案 2 :(得分:0)

这确实是一个逃避问题。 使用org.apache.solr.client.solrj.util.ClientUtils.escapeQueryChars(String) 能够使字符串读起来。