日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义的Sort对象

發布時間:2024/4/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义的Sort对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先,我們應該有一個概念,在Lucene的內置排序方法中,升降序規則默認都是natural ording,即在Sorting by relevance中默認desc,在其他排序中則是asc。 1.Sorting by relevance,中文可以叫"適當的排序"?好象有點別扭,呵呵.這也是Lucene的默認排序,即按評分結果倒序排列.
????? 以下幾種search方法都是實現的同樣的效果:
????? search(Query query,null),search(Query query,Sort.RELEVANCE),search(Query query,new Sort())
????? 結果首先按照評分結果desc排序,如果評分相同,則按照document id asc排序,其中,document id是document在索引時的先后順序。
??? 2.Sorting by index order,按照索引的先后順序asc排列。
??? 3.Sorting by a field,按field排序。field是在索引時建立的單元。這里需要注意的一點是,如果想按照field來排序,需要幾個規則:首先,這個 field必須是indexed and not tokenized,就是需要索引,但是不能分詞,例如Field.KEYWORD()方法;這個field必須可以轉換成 Integers,Floats,Strings,可以在用Field生成Sort對象的時候指定field的類型。
???
??? 正像前邊提到的,在lucene中的默認結果升降序規則是natural ording,當然我們也可以自己指定排序的升降序規則。
??? 首先,我們指定結果按照某一個field來desc排序(如果不指定,field是按照asc排序)。例 如,IndexSearcher.search(Query query,new Sort("date",true)),這里參數true的作用既是使得結果按照date field按照降序排列,這樣我們就可以將日期最近的結果排列到最前面。
??? 通常,排序規則不會這么簡單。例如,在某一個圖書查詢系統中,我們需要的排序規則是,首先按照圖書的目錄排序,然后同一目錄的圖書按照評分結果排序,評分結果相同并且目錄相同的圖書按照出版日期降序排列,代碼片段如下:
??? indexSearcher.search(Query query,new Sort(
??????? new SortField[]{
??????????? new SortField("category"),
??????????? SortField.FIELD_SCORE,
??????????? new SortField("pubmonth", SortField.INT, true)
??????? }
??? )
??? 這里,我們指定了一個SortField的數組,圖書目錄按照字典升序排列,然后目錄相同的按照評分結果降序排列,最后按照出版日期降序排列。
??? 其實,在lucene內部自動維護了一個排序的數組,只是在這個例子中,我們顯示的指定了排序的規則而已。

??? 排序對查詢性能的影響。排序需要額外的資源消耗,更多的內存消耗。lucene只是緩存實際需要排序的field。即使如此,如果需要自定義排序,仍然需要仔細的規劃,記住,按照一個String來排序將花費最大的資源。

轉載于:https://www.cnblogs.com/lcuzhanglei/archive/2012/08/01/2618467.html

總結

以上是生活随笔為你收集整理的自定义的Sort对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。