我正在尝试以允许我使用前缀查询“æ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。
答案 0 :(得分:1)
在前缀,通配符和模糊搜索上,不对搜索词执行文本分析
因此,即使在搜索时指定了MappingCharFilterFactory,搜索词也不会进行任何分析
由于分析是在索引时应用的,因此它只匹配aeb*
(重音过滤器和小写过滤器),甚至不匹配任何upper case matches。
您可以定义自己的查询解析器并分析前缀查询的搜索条件 否则,定义带有重音和非重音版本的字段,并对两者进行搜索。 但是,您仍需要小写搜索字词。