1

我在我的 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 的唯一配置参数)。

4

0 回答 0