亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Lucene的多種排序方式的實(shí)現(xiàn)

        2015-09-11 12:04:40胡海斌
        電腦知識(shí)與技術(shù) 2015年17期
        關(guān)鍵詞:全文檢索排序

        胡海斌

        摘要:Lucene是由Apache軟件基金會(huì)支持與提供,它源代碼開(kāi)放并可免費(fèi)使用,支持純Java開(kāi)發(fā)的一個(gè)全文搜索引擎開(kāi)發(fā)工具包,它提供了強(qiáng)大的查詢引擎、索引引擎、文本分析引擎等應(yīng)用程序接口,該文實(shí)現(xiàn)了其在全文檢索中多種方式的排序應(yīng)用,并在項(xiàng)目開(kāi)發(fā)中得到了較好的呈現(xiàn)。

        關(guān)鍵詞:Lucene;Java;全文檢索;排序

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)17-0054-02

        The Implementation of a Variety of Sorting Methods Based on Lucene

        HU Hai-bin

        (Experiment Center, China West Normal University, Nanchong 637002, China)

        Abstract: Lucene which is open source and free is supported and provided by the Apache Software Foundation. It supports full-text search engine of pure Java development kit, which provides a powerful query engine, indexing engine, text analysis engine and other applications Interface. the paper achieved a variety of sorting methods in the full-text search, and get a better showing in project development.

        Key words: Lucene; Java; full-text retrieval; sor

        Lucene是由Apache軟件基金會(huì)支持與提供,最新版本為5.2.1,它源代碼開(kāi)放并可免費(fèi)使用,支持純Java開(kāi)發(fā)的一個(gè)全文搜索引擎開(kāi)發(fā)工具包,它提供了強(qiáng)大的查詢引擎、索引引擎、文本分析引擎等應(yīng)用程序接口[1]。Lucene憑借良好的性能、優(yōu)異的索引結(jié)構(gòu)和易于擴(kuò)展的特性的在實(shí)際的項(xiàng)目開(kāi)發(fā)中得到越來(lái)越多的應(yīng)用[2]。

        對(duì)檢索結(jié)果排序是搜索引擎中必不可少的功能,也直接影響用戶的體驗(yàn)度,在Lucene中默認(rèn)是按評(píng)分及相關(guān)度進(jìn)行排序,然而,在全文檢索的項(xiàng)目開(kāi)發(fā)中,有時(shí)也需要按照如:文件名、文件類型、文件創(chuàng)建日期、文件大小等其它方式排序。本文在研究分析Lucene排序功能基礎(chǔ)之上,以磁盤上的文件檢索為例,設(shè)計(jì)并實(shí)現(xiàn)了基于Lucene的多種排序方式的應(yīng)用。

        1 Lucene中的排序功能

        Lucene系統(tǒng)結(jié)構(gòu)與源碼組織結(jié)構(gòu)如圖1所示,與查詢有關(guān)的源碼主要集中在org.apache.lucene.search包中,在該包中的IndexSearcher類提供了search(Query query, int n, Sort sort)、search(Query query, Filter filter, int n, Sort sort)等方法[3],這些方法通過(guò)給定不同的Sort類型實(shí)例(對(duì)象)以滿足不同的排序需求。Sort類型實(shí)例由Sort類和SortField類共同完成,兩者的類圖如圖2所示。在Sort類中可以通過(guò)構(gòu)造函數(shù)或setSort函數(shù)設(shè)定排序字段和排序方式(升序或降序)。排序字段和方式可以直接由SortField構(gòu)造函數(shù)來(lái)完成,本文調(diào)用的是SortField(field : String, type : int, reverse : boolean)構(gòu)造函數(shù),該構(gòu)造函數(shù)中field為字符串型,表示排序字段名;type是整型,表示排序字段的類型(如:INT為4,表示int型,F(xiàn)LOAT為5,表示float型等等);reverse是布爾型,表示排序?yàn)樯蚧蚪敌颉?/p>

        2 功能設(shè)計(jì)

        以檢索磁盤上的文件為例,假定已為其建立了全文索引,在索引中存儲(chǔ)的有文件的標(biāo)題、類型、創(chuàng)建日期、大小、頁(yè)數(shù)、存放路徑等信息,要求能檢索其相關(guān)信息,檢索結(jié)果并能按指定的段升序或降序排列。為此,設(shè)計(jì)用于保存或獲取文件信息的FileInfo類,其類圖描述如圖3所示:

        設(shè)計(jì)CustomSort類,其類圖如圖4所示,在類中用getProperty方法實(shí)現(xiàn)對(duì)給定類的屬性名及類型的遍歷,其結(jié)果以HashMap類型方式保存,用getSort方法實(shí)現(xiàn)對(duì)給定字段和排序方式的Sort對(duì)象的返回,后續(xù)開(kāi)發(fā)中可以調(diào)用search(Query query, int n, Sort sort)方法以實(shí)現(xiàn)多種方式的自定義排序。

        3 具體實(shí)現(xiàn)

        3.1 關(guān)鍵代碼

        本文略去Lucene所需開(kāi)發(fā)環(huán)境的部署說(shuō)明和編程環(huán)境的配置,其實(shí)現(xiàn)多種方式自定義排序的關(guān)鍵代碼如下:

        package cn.cwnu.sort;

        import java.lang.reflect.Field;

        import java.util.HashMap;

        import org.apache.lucene.search.Sort;

        import org.apache.lucene.search.SortField;

        public class CustomSort {

        private HashMap getProperty(String classPath) throws Exception {

        HashMap fieldHashMap = new HashMap();

        // 把要使用的類加載到內(nèi)存中,并且把有關(guān)這個(gè)類的所有信息都存放到對(duì)象c中

        Class<?> c = Class.forName(classPath);

        // 把屬性的信息提取出來(lái),并且存放到field類的對(duì)象中,因?yàn)槊總€(gè)field的對(duì)象只能存放一個(gè)屬性的信息所以要用數(shù)組去接收

        Field f[] = c.getDeclaredFields();

        for (int i = 0; i < f.length; i++) {

        //屬性的名字,屬性的類型

        fieldHashMap.put(f[i].getName(), f[i].getType());

        }

        return fieldHashMap;

        }

        private Sort getSort(String sortFieldName, boolean sortMethod) throws Exception {

        HashMap fieldHashMap = new HashMap();

        fieldHashMap = getProperty("cn.cwnu.lucene.file.bo.FileInfo");

        String fieldType = fieldHashMap.get(sortFieldName).toString();

        if (fieldType == null) {

        System.out.println("指定的排序字段不存在");

        return null;

        }

        int sortType = 0;

        if (fieldType.endsWith("int"))

        sortType = SortField.INT;

        if (fieldType.endsWith("String"))

        sortType = SortField.STRING;

        if (fieldType.endsWith("float"))

        sortType = SortField.FLOAT;

        if (fieldType.endsWith("double"))

        sortType = SortField.DOUBLE;

        Sort sort = new Sort();

        SortField sortField = new SortField(sortFieldName, sortType, sortMethod);

        sort.setSort(sortField);

        return sort;

        }

        }

        3.2 效果展示

        相關(guān)代碼在具體項(xiàng)目中應(yīng)用結(jié)果如圖5所示,既能實(shí)現(xiàn)按

        照默認(rèn)的相關(guān)度排序,也能根據(jù)需要選擇按照文件大小、創(chuàng)建日期、文件類型、文件名稱等多種方式排序,圖5展示了對(duì)全文檢索結(jié)果按文件大小采用排列的效果。

        4 結(jié)論

        本文針對(duì)全文檢索中多種排序方式的應(yīng)用需求,展示了其關(guān)鍵代碼和項(xiàng)目中實(shí)現(xiàn)的效果,為程序開(kāi)發(fā)人員提供一定的參考。

        參考文獻(xiàn):

        [1] 管建和,甘劍峰.基于Lucene全文檢索引擎的應(yīng)用研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007(2):489-491.

        [2] 周登朋,謝康林.Lucene搜索引擎[J].計(jì)算機(jī)工程,2007(18):95-96+118.

        [3] Apache.Lucene 5.2.1 core API[EB/OL].[2015-07-16].http://lucene.apache.org/.

        猜你喜歡
        全文檢索排序
        排序不等式
        恐怖排序
        節(jié)日排序
        刻舟求劍
        兒童繪本(2018年5期)2018-04-12 16:45:32
        Oracle數(shù)據(jù)庫(kù)全文檢索性能研究
        基于KySou的全文檢索系統(tǒng)的分析與優(yōu)化
        特色數(shù)據(jù)庫(kù)全文檢索系統(tǒng)的設(shè)計(jì)
        用JSP調(diào)用Lucene包來(lái)實(shí)現(xiàn)全文檢索
        连续高潮喷水无码| 人人妻人人澡人人爽精品欧美| 天码av无码一区二区三区四区| 一区二区三区放荡人妻| 亚洲人妻精品一区二区三区| 精品精品久久宅男的天堂| 国产98在线 | 日韩| 天天躁日日操狠狠操欧美老妇 | 久99久热只有精品国产男同| 免费在线观看蜜桃视频| 日韩精品视频在线观看无| 亚洲精品久久一区二区三区777 | 孕妇特级毛片ww无码内射| 精品十八禁免费观看| 国产精品亚洲精品日韩动图| 久久国内精品自在自线| 乱色熟女综合一区二区三区| 国产一级免费黄片无码AV| 亚洲三区av在线播放| 国产成人无码精品久久久免费| 国产成人午夜精华液| 精品国产一区二区三区亚洲人| 亚洲一区在线二区三区| 久久久久人妻精品一区三寸| 亚洲av无码一区二区乱子伦| 国产日韩一区二区精品| 国产一区二区三区在线蜜桃 | 亚洲熟妇夜夜一区二区三区| 91精品国产乱码久久中文| 看黄a大片日本真人视频直播| 亚洲AV永久无码精品导航| 日韩va高清免费视频| 国产69久久精品成人看| 欧美黑人乱大交| 在线播放中文字幕一区二区三区| 免费国产一级片内射老| 国产精女同一区二区三区久| 国产a√无码专区亚洲av| 亚洲最大天堂无码精品区| 亚洲一区精品一区在线观看| 国产内射一级一片内射视频|