<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當(dāng)幸福來敲門

    我就會(huì)牢牢抓住!
    隨筆 - 50, 文章 - 3, 評(píng)論 - 8, 引用 - 0
    數(shù)據(jù)加載中……

    Lucene搜集 排序 、過濾、分詞

    2010-03-24 22:05 859人閱讀 評(píng)論(0) 收藏 舉報(bào)

    1.    排序

    1.1. Sort

    public Sort()

    public Sort(String field)

    public Sort(String field,Boolean reverse) //默認(rèn)為false,降序排序

    public Sort(String[] fields)

    public Sort(SortField field)

    public Sort(SortField[] fields)

    Sort sort=new Sort(bookname);按照“bookname“這個(gè)Field值進(jìn)行降序排序

    Sort sort=new Sort(bookname,true) //升序排序

    Sort sort=new Sort(new String[]{bookNumber,bookname,publishdate});按照三個(gè)Field進(jìn)行排序,但無法指定升序排序,所以用SortField

    1.2. SortField

    public SortField(String field)

    public SortField(String field,Boolean reverse)

    public SortField(String field,int type) //type表示當(dāng)前Field值的類型

    public SortField(String field,int type,boolean reverse) //默認(rèn)為false,升序

    Field值的類型:SortField.STRINGSortField.INTSortField.FLOAT

    SortField sf1=new SortField(“bookNumber”,SortField.INT,false);

    SortField sf2=new SortField(“bookname”,SortField.STRING,false);

    1.3. 指定排序的法則

    1.3.1.按照文檔的得分降序排序

    Hits hits=searcher.search(query,Sort.RELEVANCE);

    1.3.2.按文檔的內(nèi)部ID升序排序

    Hits hits=searcher.search(query, Sort.INDEXORDER);

    1.3.3.按照一個(gè)Field來排序

    Sort sort=new Sort();

    SortField sf=new SortField(“bookNumber”,SortField.INT,false);

    sort.setSort(sf);

    Hits hits=searcher.search(query,sort);

    1.3.4.按照多個(gè)Field來排序

    Sort sort=new Sort();

    SortField sf1=new SortField(bookNumber,SortField.INT,false);//升序

    SortField sf2=new SortField(publishdate,SortField.STRING,true);//降序

    sort.setSort(new SortField[]{sf1,sf2});

    Hits hits=searcher.search(query,sort);

    1.3.5.改變SortField中的Locale信息

    String str1=”我”; String str2=”你”;

    Collator co1=Collator.getInstance(Locale.CHINA);

    Collator co2=Collator.getInstance(Locale.JAPAN);

    System.out.println(Locale.CHINA+:+co1.compare(str1str2));

    System.out.println(Locale.JAPAN+”:”+co2.compare(str1,str2));

    輸出結(jié)果為:

    zh_CN:1

    ja_JP:-1

    所以

    public SortField(String field,Locale locale)

    public SortField(String field,Locale locale,boolean reverse)

    2.    過濾器

    使用public Hits search(Query query,Filter filter)

    1)簡單過濾

    Hits hits=searcher.search(query,new AdvancedSecurityFilter());//過濾掉securitylevel0的結(jié)果

    2)范圍過濾—RangeFilter

    只顯示中間的

    RangeFilter filter=new RangeFilter(“publishdate”,”1970-01-01”,”1998-12-31”,true,true”);

    Hits hits=searcher.search(query,filter);

     

    無上邊界

    public static RangeFilter More(String fieldname,String lowerTerm)

     

    無下邊界

    public static RangeFilter Less(String fieldname,String upperTerm)

    (3)在結(jié)果中查詢QueryFilter

    RangeQuery q=new RangeQuery(new Term(“publicshdate”,”1970-01-01”),

    new Term(“publishdate”,”1999-01-01”),true);

    QueryFilter filter=new QueryFilter(q);

    Hits hits=searcher.search(query,filter);

    3.    分析器Analysis

    3.1. 自帶分析器和過濾器

    Ø         標(biāo)準(zhǔn)過濾器:StandardAnalyzer

    Ø         大小寫轉(zhuǎn)換器:LowerCaseFilter

    Ø         忽略詞過濾器:StopFilter

    public StopFilter(TokenStream input,String [] stopWords)

    public StopFilter(TokenStream in,String [] stopWords,boolean ignoreCase)

    public StopFilter(TokenStream input,Set stopWords,boolean ignoreCase)

    public StopFilter(TokenStream in, Set stopWords)

    其中,參數(shù)TokenStream代表當(dāng)前正在進(jìn)行處理的流;String類型的數(shù)組代表一個(gè)用數(shù)組表示的忽略詞集合;Set類型的參數(shù)與String一樣,是用來表示忽略詞集合的;boolean表示當(dāng)與忽略詞集合中的詞進(jìn)行匹配時(shí),是否需要忽略大小寫。

    Ø         長度過濾器:LengthFilter

    Ø         PerFieldAnalyzerWrapper

    Ø         WhitespaceAnalyzer

    String str="str1 str2 str3";

           StringReader reader=new StringReader(str);

           Analyzer anlyzer=new WhitespaceAnalyzer();

          

           TokenStream ts=anlyzer.tokenStream("", reader);

           Token t=null;

           while( (t=ts.next())!=null ){

               System.out.println(t.termText());

           }

    3.2. 第三方過分析器

    Ø         單字分詞

    Ø         二分法:CJKAnalyzer、中科院ICTCLAS分詞、JE分詞

    Ø         詞典分詞

    3.2.1.JE分詞用法

    3.2.1.1.    示例

    import jeasy.analysis.MMAnalyzer;

    IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new MMAnalyzer()

    , true);

    String str=" Lucene是一個(gè)全文檢索引擎的架構(gòu),"+

               "提供了完整的查詢引擎和索引引擎。Lucene以其方便使用、快" +

               "速實(shí)施以及靈活性受到廣泛的關(guān)注。它可以方便地嵌入到各種應(yīng)用" +

               "中實(shí)現(xiàn)針對(duì)應(yīng)用的全文索引、檢索功能,本總結(jié)使用lucene--2.3.2";

           MMAnalyzer analyzer=new MMAnalyzer();

           try{

               System.out.println(analyzer.segment(str, "|"));

           }

           catch(Exception e)

           {

               e.printStackTrace();

           }

    輸出結(jié)果:lucene|一個(gè)|全文|檢索|引擎|架構(gòu)|提供|完整|查詢|。。。。

    3.2.1.2.    設(shè)定正向最大匹配的字?jǐn)?shù)

    MMAnalyzer analyzer=new MMAnalyzer(4);

    3.2.1.3.    添加新詞

    MMAnalyzer.addWord(String word);

    MMAnalyzer.addDictionary(Reader reader);

     

    MMAnalyzer analyzer=new MMAnalyzer();

    MMAnalyzer.addWord("邁克爾雷第");

     

    4.    索引的合并

    RAMDirectory RAMDir=new RAMDirectory();

    IndexWriter writer = new IndexWriter(RAMDir, new StandardAnalyzer(), true);//刪除原有索引

    IndexWriter writer2=new IndexWriter(FSDirectory.getDirectory(path,true),

    new StandardAnalyzer(), true);

    writer.addDocument(doc1);

    writer2.addDocument(doc2);

    writer.close();

    writer2.addIndexes(new Directory[]{RAMDir});

    writer2.close();

    posted on 2011-12-30 16:34 wyx 閱讀(1397) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲AV综合色一区二区三区| 亚洲视频免费在线看| 久久久久国色av免费看| 亚洲婷婷天堂在线综合| 免费看美女被靠到爽的视频| 亚洲精品色在线网站| 亚洲av永久无码精品国产精品| 99久久久精品免费观看国产| 国产精品亚洲av色欲三区| 久久久久无码精品亚洲日韩| 国产精品四虎在线观看免费| 青柠影视在线观看免费| 亚洲国产精品无码观看久久| 久久水蜜桃亚洲av无码精品麻豆| 国产成人一区二区三区免费视频| 最近在线2018视频免费观看| 一本久久A久久免费精品不卡| 国产精品高清视亚洲精品| 国产亚洲精品观看91在线| 午夜时刻免费入口| 最近中文字幕免费完整| fc2免费人成为视频| 中文字幕在线观看亚洲日韩| 亚洲日本一区二区| 亚洲日韩在线第一页| 日本不卡视频免费| 在线视频精品免费| 亚洲免费精彩视频在线观看| 精品国产免费人成网站| 日本亚洲欧美色视频在线播放| 亚洲成人网在线观看| 亚洲成a人片在线观看日本| 免费一级毛片不卡在线播放 | 在线观看免费人成视频色9| a视频在线观看免费| 丰满妇女做a级毛片免费观看| 国产亚洲精品VA片在线播放| 亚洲熟妇av一区二区三区下载| 亚洲精品无码专区在线在线播放| 亚洲Av无码乱码在线znlu| 日本特黄特黄刺激大片免费|