Solr特殊排序

时间:2014-05-23 22:22:16

标签: sorting solr

我在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> 

等等,没有成功, 是否有可能实现这一目标?

1 个答案:

答案 0 :(得分:0)

我怀疑这不起作用。

停用词过滤会过滤掉与您的停用词匹配的令牌,但关键字令牌生成器实际上并未将文本分成多个令牌。由于整个标题是一个标记,并且不是您的一个停用词,因此过滤器不执行任何操作。

但是,您无法在排序文本字段中使用任何其他标记生成器。

所以我看到两个选择:

一,使用PatternReplaceFilter应用正则表达式,并在不间断的文本值中匹配/删除您的停用词。

两,删除准备Solr文档以提交给Solr的代码中的停用词。

与内置Solr禁用词过滤器相比,两者都有明显的缺点。我个人非常喜欢使用选项二。使用多个停用词可能非常难以管理第一个选项。