我在solr中有Text字段,我希望它以特殊方式排序
title
-------
The Book
When Available
因为当我查询和排序字段时,我的停用词列表中包含(当,on)单词时,我希望它们显示为:
When Available ( first )
The Book ( second )
到目前为止,我已尝试使用
的各种组合<fieldType name="sortString" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true"/>
.......
</analyzer>
</fieldType>
等等,没有成功, 是否有可能实现这一目标?
答案 0 :(得分:0)
我怀疑这不起作用。
停用词过滤会过滤掉与您的停用词匹配的令牌,但关键字令牌生成器实际上并未将文本分成多个令牌。由于整个标题是一个标记,并且不是您的一个停用词,因此过滤器不执行任何操作。
但是,您无法在排序文本字段中使用任何其他标记生成器。
所以我看到两个选择:
一,使用PatternReplaceFilter应用正则表达式,并在不间断的文本值中匹配/删除您的停用词。
两,删除准备Solr文档以提交给Solr的代码中的停用词。
与内置Solr禁用词过滤器相比,两者都有明显的缺点。我个人非常喜欢使用选项二。使用多个停用词可能非常难以管理第一个选项。