问题描述
我在 schema.xml 中有text_general"字段
I have "text_general" field in schema.xml
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/><filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我保存了文件:
document1:
spell = "contro un indice generale dei prezzi salito del 2, 1%. Rincari ben piщ evidenti, tra i prodotti da bar"
testata = "Mattino di Padova (Il)"
document2:
spell="con i prodotti di qualitа vinco la crisi dei consumi Farinetti: con"
testata = "Italia Oggi"
document3
spell = "convenienza Il 2008 porta i primi aumenti nei pre zi L'Ipercoop cresce il listino"
testata = "Nuova Ferrara (La)"
spell"和testata"字段具有text_general"类型.
"spell" and "testata" fields has a "text_general" type.
搜索对我来说很好:
http://localhost:8080/solr/select?q={!type=edismax qf=spell v='co*'}
但是排序存在一些问题:
But with sorting exists some problem:
http://localhost:8080/solr/select?q={!type=edismax qf=spell v='co*'}&sort=testata desc
它返回给我这个结果:
document1:
spell = "contro un indice generale dei prezzi salito del 2, 1%. Rincari ben piщ evidenti, tra i prodotti da bar"
testata = "Mattino di Padova (Il)"
document2:
spell="con i prodotti di qualitа vinco la crisi dei consumi Farinetti: con"
testata = "Italia Oggi"
document3
spell = "convenienza Il 2008 porta i primi aumenti nei pre zi L'Ipercoop cresce il listino"
testata = "Nuova Ferrara (La)"
我不明白为什么我的排序工作不正常.它应该像这样返回我的结果:
I don`t understand why my sorting working not properly. It should returns me result like this:
document3
spell = "convenienza Il 2008 porta i primi aumenti nei pre zi L'Ipercoop cresce il listino"
testata = "Nuova Ferrara (La)"
document1:
spell = "contro un indice generale dei prezzi salito del 2, 1%. Rincari ben piщ evidenti, tra i prodotti da bar"
testata = "Mattino di Padova (Il)"
document2:
spell="con i prodotti di qualitа vinco la crisi dei consumi Farinetti: con"
testata = "Italia Oggi"
推荐答案
排序不适用于多值和标记化字段.
由于 testata
已经用 text_general
字段类型定义,它将被标记化,因此排序将无法正常工作.
Sorting doesn't work good on multivalued and tokenized fields.
As testata
has been defined with text_general
field type, it will be tokensized and hence the sort would not work fine.
可以对文档的分数"进行排序,也可以对任何multiValued="false" indexed="true"
字段,前提是该字段是非标记化(即:没有分析器)或使用仅产生单个 Term(即:使用 KeywordTokenizer)
来源:http://wiki.apache.org/solr/CommonQueryParameters#sort一个>
使用 string
作为字段类型并将 title
字段复制到新字段中.
Use string
as the field type and copy the title
field into the new field.
<field name="testata_sort" type="string" indexed="true" stored="false"/>
<copyField source="testata" dest="testata_sort" />
这篇关于Solr 错误排序文本字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!