2015-09-06 29 views
1

所以基本上我有以下问题, 我在我的指数3个文件:Solr的 - 排序字段字符数和辞书价值

test activ1 

test activ9 

test activ15 

当我有点自己的头衔我想:

test activ1 

test activ9 

test activ15 

但我实际上得到的是:

test activ1 

test activ15 

test activ9 

标题字段类型定义是LIK è这样:

<fieldType name="title" class="solr.TextField" omitNorms="false" positionIncrementGap="100"> 
    <analyzer> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    </analyzer> 
</fieldType> 

我试图寻找到相似性类别来改变lengthNorm,但我不能让字段值在其计算字段长度。

任何想法?

谢谢!

编辑:使用查询:

select?q=title:test*&sort=title+asc 
+0

什么是您正在使用的查询?你能提供吗? – YoungHobbit

+0

阅读编辑请 – tomerZZ

回答

0

排序参数在升序(ASC)或降序(降序)排列顺序的搜索结果。该参数可以与数字或字母内容一起使用。方向可以全部以小写字母或全部大写字母(即,asc或ASC)输入。

Solr返回按字母顺序排序的结果。按字母顺序,当您比较test activ15test activ9时,test activ15将首先出现,因为1先出现然后9

你的期望或想像的是数值,9小于15,但solr将它们视为String(字母)。您已配置的分析器链将以文本形式输出令牌。所以solr将无法单独处理文本中的数字。所以我认为,输出是正确的。

从文档:Solr排序功能需要field分析KeywordTokenizer,所以它会产生一个单一的术语。基本上,它期望该术语完全是数字或字母,后面的情况适用于您的数据。


编辑:
您可能需要编写自己的自定义排序逻辑。请这post。它有一些关于使用FieldComparatorSourceFieldComparator编写自定义排序逻辑的信息。

+0

谢谢你的解释,但它并不真的帮我解决它... – tomerZZ

+0

检查答案中提到的帖子。它可能会帮助你。 – YoungHobbit