Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search Solr对文本字段进行错误排序_Search_Sorting_Solr_Edismax - Fatal编程技术网

Search Solr对文本字段进行错误排序

Search Solr对文本字段进行错误排序,search,sorting,solr,edismax,Search,Sorting,Solr,Edismax,我在schema.xml中有“text\u general”字段 <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="so

我在schema.xml中有“text\u 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>
“拼写”和“测试”字段具有“文本\常规”类型

寻找适合我的工作:

http://localhost:8080/solr/select?q={!type=edismax qf=spell v='co*'}
但排序存在一些问题:

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)"
我不明白为什么我的分拣工作不正常。它应该像这样返回我的结果:

    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"

排序在多值和标记化字段上效果不佳。
由于已使用
text\u general
字段类型定义了
testata
,因此它将被标记大小,因此排序将无法正常工作

可以根据文档的“分数”或任何
multiValued=“false”index=“true”
字段,前提是该字段为 非标记化(即:没有分析器)或使用仅 生成单个术语(即:使用关键字标记器)

资料来源:

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

<field name="testata_sort" type="string" indexed="true" stored="false"/>

<copyField source="testata" dest="testata_sort" />  

+1。这就是我在多值字段上启用“排序”的最后一步:将每个字段的第一个值复制到相应的字符串字段中,然后对这些字段进行排序。谢谢!我使用的是“部分匹配”字段类型,无法理解为什么结果返回时完全未排序。切换到常规文本字段修复了以下问题:)
<field name="testata_sort" type="string" indexed="true" stored="false"/>

<copyField source="testata" dest="testata_sort" />