我在我的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文档,其中“artist”字段设置为“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唯一的配置参数,我还不完全理解。)