2016-03-02 57 views
0

簡單而直接的問題: 是否可以根據搜索結果的創建順序/日期對搜索結果進行排序?添加日期字段並按它排序是一個選項。 但是,索引已經存在,並且包含了一大堆我想排序(某些)的文檔。是否可以按創建順序/日期對Lucene搜索結果進行排序?

+0

AFAIK Lucene不會在索引中存儲創建日期。但是文件編號是否連續? (我剛剛檢查過,他們[不一定]](https://lucene.apache.org/core/3_0_3/fileformats.html#Document%20Numbers)) – biziclop

+0

沒有意識到這一事實。那麼我們可以假設一個默認的結果集是通過doc ID命令的asc嗎? –

+0

啊,據我瞭解,這些ID不是唯一的,特別是在多個索引中使用時。但最有可能確保一致的創作順序。我會多挖一點。 –

回答

2

不是使用docID的任何東西(除了在查詢後獲取文檔)。它是而不是順序,如果你做更新(這實際上是一個刪除然後添加)不一定是穩定的。

只需在查詢中添加一個表示日期和排序的字段。

將其設置爲數字字段,並將其格式設置爲yyyyMMddhhmmss。如果您需要較少的精度,只需從右側刪除一些數字即可。或者,如果你想要更好的精度,只需存儲滴答值。

擴展方法FTW!

public static long AsYMDHMS(this DateTime date) 
    { 
     return 
      (date.Year * 10000000000) + 
      (date.Month * 100000000) + 
      (date.Day * 1000000) + 
      (date.Hour * 10000) + 
      (date.Minute * 100) + 
      date.Second; 
    } 
相關問題