1

私はいくつかのドキュメントを照会するsolrを使用しています。この 1 つのケースでは、結果を関連性で並べ替えるのではなく、タイトルで並べ替えたいと考えています。私はsolrjで次のことをしました:

//sort by title
setSortField("title", SolrQuery.ORDER.asc)

ドキュメントのタイトルに空白やスラッシュがない場合、これはうまく機能します。4 つのドキュメントがある場合、タイトルの値は次のように並べられます。

"A"
"B"
"C"
"B D"

Solr は、フィールド内の最初の空白の後にフィールドから注文を開始するように思えます。なぜこれが起こるのですか?

4

2 に答える 2

0

私が説明した例は構築されたものでしたが、与えられた例でもテストしたところ、同じ動作がありました。

フィールドに次の構成を使用します。

<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>

返信ありがとうございます。

于 2012-07-04T11:30:09.650 に答える