0

在 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
4

3 回答 3

0

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

于 2012-11-01T15:21:03.990 回答
0

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

您是否尝试过仅对查询进行编码?

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

应该可以正常工作

于 2012-10-06T09:51:04.633 回答
0

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

如果您需要有关添加分析器的指导,请参考在架构中指定分析器。

于 2012-10-05T16:54:13.520 回答