2015-09-06 95 views
1

所以基本上我有以下問題, 我在我的指數3個文件:Solr的 - 排序字段字符數和辭書價值

test activ1 

test activ9 

test activ15 

當我有點自己的頭銜我想:

test activ1 

test activ9 

test activ15 

但我實際上得到的是:

test activ1 

test activ15 

test activ9 

標題字段類型定義是LIK è這樣:

<fieldType name="title" class="solr.TextField" omitNorms="false" positionIncrementGap="100"> 
    <analyzer> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    </analyzer> 
</fieldType> 

我試圖尋找到相似性類別來改變lengthNorm,但我不能讓字段值在其計算字段長度。

任何想法?

謝謝!

編輯:使用查詢:

select?q=title:test*&sort=title+asc 
+0

什麼是您正在使用的查詢?你能提供嗎? – YoungHobbit

+0

閱讀編輯請 – tomerZZ

回答

0

排序參數在升序(ASC)或降序(降序)排列順序的搜索結果。該參數可以與數字或字母內容一起使用。方向可以全部以小寫字母或全部大寫字母(即,asc或ASC)輸入。

Solr返回按字母順序排序的結果。按字母順序,當您比較test activ15test activ9時,test activ15將首先出現,因爲1先出現然後9

你的期望或想像的是數值,9小於15,但solr將它們視爲String(字母)。您已配置的分析器鏈將以文本形式輸出令牌。所以solr將無法單獨處理文本中的數字。所以我認爲,輸出是正確的。

從文檔:Solr排序功能需要field分析KeywordTokenizer,所以它會產生一個單一的術語。基本上,它期望該術語完全是數字或字母,後面的情況適用於您的數據。


編輯:
您可能需要編寫自己的自定義排序邏輯。請這post。它有一些關於使用FieldComparatorSourceFieldComparator編寫自定義排序邏輯的信息。

+0

謝謝你的解釋,但它並不真的幫我解決它... – tomerZZ

+0

檢查答案中提到的帖子。它可能會幫助你。 – YoungHobbit