在Solrj中使用空格对查询进行排序

在Solrj中使用空格对查询进行排序,solr,solrj,Solr,Solrj,我正在使用solr查询一些文档。在这种情况下,我不想按相关性对结果排序,我希望它们按标题排序。我在solrj中做了以下工作: //sort by title setSortField("title", SolrQuery.ORDER.asc) 当文档标题中没有空格或斜杠时,这种方法可以很好地工作。当我有4个文档时,标题值的顺序如下: "A" "B" "C" "B D" 在我看来,Solr从字段中第一个空格后开始排序。 知道为什么会发生这种情况吗?我描述的示例是一个构造的示例,但我现在也用给定

我正在使用solr查询一些文档。在这种情况下,我不想按相关性对结果排序,我希望它们按标题排序。我在solrj中做了以下工作:

//sort by title
setSortField("title", SolrQuery.ORDER.asc)
当文档标题中没有空格或斜杠时,这种方法可以很好地工作。当我有4个文档时,标题值的顺序如下:

"A"
"B"
"C"
"B D"
在我看来,Solr从字段中第一个空格后开始排序。
知道为什么会发生这种情况吗?

我描述的示例是一个构造的示例,但我现在也用给定的示例测试了它,并且有相同的行为

我对字段使用以下配置:

<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
   <analyzer type="index">
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" enablePositionIncrements="true" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.WordDelimiterFilterFactory" splitOnCaseChange="0" catenateAll="0" catenateNumbers="1" catenateWords="1" generateNumberParts="1" generateWordParts="1"/>
      <filter class="solr.LowerCaseFilterFactory"/>
   </analyzer>
   <analyzer type="query">
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.SynonymFilterFactory" ignoreCase="true" expand="true" synonyms="synonyms.txt"/>
      <filter class="solr.StopFilterFactory" enablePositionIncrements="true" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.WordDelimiterFilterFactory" splitOnCaseChange="0" catenateAll="0" catenateNumbers="0" catenateWords="0" generateNumberParts="1" generateWordParts="1"/>
      <filter class="solr.LowerCaseFilterFactory"/>
   </analyzer>
</fieldType>


感谢您的回复。

请查找要创建的字段类型

{
  "add-field-type" : {
     "name":"master_keyword_sort",
     "class":"solr.TextField",
     "positionIncrementGap":"100",
     "analyzer" : {
         "tokenizer":{ 
           "class":"solr.KeywordTokenizerFactory" },
        "filters":[{
           "class":"solr.PatternReplaceFilterFactory",
           "pattern":"([^A-Za-z0-9])",
           "replacement":"" ,"replace":"all"},
           {
           "class":"solr.LowerCaseFilterFactory"
           }]}}
}

您使用的是字符串还是文本?索引和/或存储?不要粗鲁,但你的例子是真的吗;
bd
字面上在
C
之后吗?否则,请张贴一些真实的例子。所描述的行为可能是由于您的索引链。这完全取决于您对标题字段使用的标记器和过滤器。事实上,排序是使用索引值进行的,这与您在结果(存储内容)中看到的不同。使用关键字标记器(而不是空白标记器)以字段类型制作此字段的另一个副本…感谢您的答复,关键字标记器更改了顺序,但其顺序仍然不正确。我将尝试用solr附带的基本配置重新创建错误。