使用ISOLatin1Accent字符进行Solr前缀查询

时间:2011-10-23 10:18:06

标签: solr

我正在尝试以允许我使用前缀查询“æb*”以及“aeb*”查找文档的方式索引字段。会发生什么:它找到了后者,但不是前者。与å,î等相同的问题

这是我的架构:

<fieldtype name="text" class="solr.TextField" positionIncrementGap="100">
  <analyzer>
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>

  </analyzer>
</fieldtype>

正如您所看到的,我使用相同的分析器进行索引和查询。因此,如果我理解正确,查询“æb*”应该标准化为“aeb*”。 “*”符号是否会以某种方式干扰?如何设置我的架构以获得所需的结果?

我正在使用Solr 1.4.1。

1 个答案:

答案 0 :(得分:1)

在前缀,通配符和模糊搜索上,不对搜索词执行文本分析 因此,即使在搜索时指定了MappingCharFilterFactory,搜索词也不会进行任何分析 由于分析是在索引时应用的​​,因此它只匹配aeb*(重音过滤器和小写过滤器),甚至不匹配任何upper case matches

您可以定义自己的查询解析器并分析前缀查询的搜索条件 否则,定义带有重音和非重音版本的字段,并对两者进行搜索。 但是,您仍需要小写搜索字词。