我在我的 Solr 架构(.xml)中声明了“text_general_rev”字段类型,如下所示:
<fieldType
    name="text_general_rev"
    class="solr.TextField"
    positionIncrementGap="100">
    <analyzer type="index">
       <tokenizer class="solr.KeywordTokenizerFactory" />
       <filter
            class="solr.ReversedWildcardFilterFactory"
            withOriginal="true"
            maxPosAsterisk="2"
            maxPosQuestion="2"
            maxFractionAsterisk="1.0" />
        <filter class="solr.LowerCaseFilterFactory" />                
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
</fieldType>
我有 2 个 Solr 文档,其中“艺术家”字段设置为“text_general_rev”,如下所示:
Document1 艺术家是“Jimmy Jones Tim Coco Mimi”
Document2 艺术家是“Jones Jimmy Tim Bobo Mimi”
如果我进行“从某事开始”的搜索,它们会按照我的意愿工作:
+artist:(J*)返回文档 1 和 2
+artist:(Jim*)返回文件 1
+artist:(Jimmy Jo*)返回文件 1
另一方面,类似的查询,但类型为“以某些东西结尾”的工作方式不同:
+artist:(*Mimi)返回文档 1 和 2(没关系)
+artist:(*Coco Mimi)返回 0 个结果(这是不行的)
+artist:("*Coco Mimi")返回 0 个结果(这是不行的)
+artist:(*co Mimi)返回 0 个结果(这是不行的)
+artist:("*co Mimi")返回 0 个结果(这是不行的)
我的问题是为什么会这样?这是否正常,如果是,我错过了什么?我尝试了 maxFractionAsterisk 的多个值(如 0、0.5、1 等。这是我不完全理解的 ReversedWildcardFilterFactory 的唯一配置参数)。