Solr 使用ReversedWildcardFilterFactory和KeywordTokenizerFactory查询以、结尾的单词
我在Solr模式(.xml)中声明了“text\u general\u rev”字段类型,如下所示: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 另一方面,类似的查询,但类型为“结束时
我有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>