Solr错误的排序文本字段

vla*_*mir 11 sorting search solr edismax

我在schema.xml中有"text_general"字段

<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>
Run Code Online (Sandbox Code Playgroud)

我有存储文件:

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)"
Run Code Online (Sandbox Code Playgroud)

"spell"和"testata"字段具有"text_general"类型.

搜索工作正常我:

http://localhost:8080/solr/select?q={!type=edismax qf=spell v='co*'}
Run Code Online (Sandbox Code Playgroud)

但是排序存在一些问题:

http://localhost:8080/solr/select?q={!type=edismax qf=spell v='co*'}&sort=testata desc
Run Code Online (Sandbox Code Playgroud)

它返回给我这个结果:

    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)"
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我的排序工作不正常.它应该返回我这样的结果:

    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"
Run Code Online (Sandbox Code Playgroud)

Jay*_*dra 26

排序在多值和标记化字段上不起作用.
正如testata已经用text_general字段类型定义的那样,它将被标记化,因此排序不会很好.

文档 - 可以在文档的"得分"上进行排序,也可以在任何multiValued ="false"indexed ="true"字段上进行排序,前提是该字段是非标记化的(即:没有分析器)或仅使用分析器产生一个Term(即:使用KeywordTokenizer)

http://wiki.apache.org/solr/CommonQueryParameters#sort

使用字符串作为字段类型,并将标题字段复制到新字段中.