Solr 使用ReversedWildcardFilterFactory和KeywordTokenizerFactory查询以、结尾的单词

Solr 使用ReversedWildcardFilterFactory和KeywordTokenizerFactory查询以、结尾的单词,solr,wildcard,Solr,Wildcard,我在Solr模式(.xml)中声明了“text\u general\u rev”字段类型,如下所示: 我有2个Solr文档,其中“艺术家”字段设置为“文本\常规\修订版”,如下所示: 文档1艺术家是“吉米·琼斯·蒂姆·科科·米米” 文档2艺术家是“琼斯·吉米·蒂姆·波波·米米” 如果我进行“从某物开始”这类搜索,它们会按照我的意愿工作: +artist:(J*)返回文档1和2 +艺术家:(Jim*)返回文档1 +艺术家:(Jimmy Jo*)返回文档1 另一方面,类似的查询,但类型为“结束时

我在Solr模式(.xml)中声明了“text\u general\u rev”字段类型,如下所示:


我有2个Solr文档,其中“艺术家”字段设置为“文本\常规\修订版”,如下所示:

文档1艺术家是“吉米·琼斯·蒂姆·科科·米米”

文档2艺术家是“琼斯·吉米·蒂姆·波波·米米”

如果我进行“从某物开始”这类搜索,它们会按照我的意愿工作:

+artist:(J*)
返回文档1和2

+艺术家:(Jim*)
返回文档1

+艺术家:(Jimmy Jo*)
返回文档1

另一方面,类似的查询,但类型为“结束时有一些不一样的东西:

+artist:(*Mimi)
返回文档1和文档2(可以)

+artist:(*cocomimi)
返回0个结果(不正常)

+artist:(“*cocomimi”)
返回0个结果(不正常)

+artist:(*co-Mimi)
返回0个结果(不正常)

+artist:(“*co-Mimi”)
返回0个结果(不正常)


我的问题是为什么会发生这种情况?这正常吗?如果正常,我遗漏了什么?我尝试了MaxFracteStrik的多个值(如0、0.5、1等。这是ReversedWildcardFilterFactory的唯一配置参数,我不完全理解).

艺术家的字段类型是什么?正如你提到的,字段类型用于标题?@Jayendra a doh我复制了错误的代码。它是同一个字段,我现在就更正它。你是如何启动查询的?你使用的是什么请求处理程序?因为如果我使用默认处理程序,它会匹配结果。记住,通配符查询不会进行任何分析因此小写过滤器不适用于带有*的查询词。因此Co或Coco将不匹配任何文档,因为小写过滤器仅在索引时应用。J*也将不匹配任何结果。
<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>