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

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

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

    DANCE WITH JAVA

    開發出高質量的系統

    常用鏈接

    統計

    積分與排名

    好友之家

    最新評論

    lucene的豐富的各種查詢(二)

    和上文一樣,列寫lucene的查詢用法
    包括了RangeQuery  prefixQuery  phraseQuery  wildcastQuery   fuzzyQuery
    被索引查詢的文件,按照需求自己構造即可。
    package search;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import org.apache.lucene.analysis.standard.StandardAnalyzer;
    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
    import org.apache.lucene.index.IndexWriter;
    import org.apache.lucene.index.Term;
    import org.apache.lucene.search.FuzzyQuery;
    import org.apache.lucene.search.Hits;
    import org.apache.lucene.search.IndexSearcher;
    import org.apache.lucene.search.PhraseQuery;
    import org.apache.lucene.search.PrefixQuery;
    import org.apache.lucene.search.Query;
    import org.apache.lucene.search.RangeQuery;
    import org.apache.lucene.search.TermQuery;
    import org.apache.lucene.search.WildcardQuery;
    import org.apache.lucene.store.Directory;
    import org.apache.lucene.store.RAMDirectory;

    public class SearcherShow {
        
    private static Directory directory = new RAMDirectory();
        
    public static void preIndex() throws Exception{
            String fileName1 
    = "./data/searchShow.txt";
            String fileName2 
    = "./data/searchShow2.txt";
            String fileName3 
    = "./data/test.txt";
            IndexWriter writer 
    = new IndexWriter(directory,new StandardAnalyzer(),true);
            Document doc1 
    = getDocument(fileName1);
            Document doc2 
    = getDocument(fileName2);
            Document doc3 
    = getDocument(fileName3);
            writer.addDocument(doc1);
            writer.addDocument(doc2);
            writer.addDocument(doc3);
            writer.close();
            
        }

        
    //先建立索引才能執行
        
        
    //termQuery   rangeQuery   booleanQuery的查詢在Searcher類中
        public static void rangeQuery() throws Exception{
            Term startTerm 
    = new Term("lastmodified","20070620");
            Term endTerm 
    = new Term("lastmodified","20070622");
            RangeQuery query 
    = new RangeQuery(startTerm,endTerm,true);
            IndexSearcher searcher 
    = new IndexSearcher(directory);
            Hits hits 
    = searcher.search(query);
            prtHits(hits);
        }

        
    public static void prefixQuery() throws Exception{
            Term term 
    = new Term("fileName","searchShow.txt");
            Term prefixterm 
    = new Term("fileName","searchShow");
            IndexSearcher searcher 
    = new IndexSearcher(directory);
            Query query 
    = new TermQuery(term);
            Query prefixQuery 
    = new PrefixQuery(prefixterm);
            Hits hits 
    = searcher.search(query);
            Hits prefixHits 
    = searcher.search(prefixQuery);
            prtHits(hits);
            System.out.println(
    "----------");
            prtHits(prefixHits);
        }

        
    public static void phraseQuery() throws Exception{
            IndexSearcher searcher 
    = new IndexSearcher(directory);
            PhraseQuery query 
    = new PhraseQuery();
            query.setSlop(
    2);
            query.add(
    new Term("contents","quick"));
            query.add(
    new Term("contents","fox"));
            Hits hits 
    = searcher.search(query);
            prtHits(hits);
        }

        
    public static void wildcardQuery() throws Exception{
            IndexSearcher searcher 
    = new IndexSearcher(directory);
            Query query 
    = new WildcardQuery(new Term("contents","?ild*"));
            Hits hits 
    = searcher.search(query);
            prtHits(hits);
        }

        
    public static void fuzzyQuery() throws Exception{
            IndexSearcher searcher 
    = new IndexSearcher(directory);
            Term term 
    = new Term("contents","wuzza");
            FuzzyQuery query 
    = new FuzzyQuery(term);
            Hits hits 
    = searcher.search(query);
            prtHits(hits);
        }

        
    public static Document getDocument(String fileName) throws Exception{
            File file 
    = new File(fileName);
            Document doc 
    = new Document();
            doc.add(Field.Keyword(
    "fileName",file.getName() ));
            Date modified 
    = new Date(file.lastModified());
            String lastmodified 
    = new SimpleDateFormat("yyyyMMdd").format(modified);
            doc.add(Field.Keyword(
    "lastmodified", lastmodified));
            BufferedReader br 
    = new BufferedReader(new InputStreamReader(
                    
    new FileInputStream(file)));
            StringBuffer sb 
    = new StringBuffer();
            String line 
    = null;
            
    while ((line = br.readLine()) != null{
                sb.append(line);
            }

            br.close();
            doc.add(Field.Text(
    "contents",sb.toString() ));
            
    return doc;
        }

        
    public static void prtHits(Hits hits) throws Exception{
            
    for(int i=0;i<hits.length();i++){
                Document doc 
    = hits.doc(i);
                System.out.println(doc.get(
    "fileName"));
                System.out.println(doc.get(
    "lastmodified"));
            }

        }

        
    public static void main(String[] args) throws Exception{
            preIndex();
    //        rangeQuery();
    //        prefixQuery();
    //        phraseQuery();
    //        wildcardQuery();
            fuzzyQuery();
        }

    }

    posted on 2007-06-21 15:08 dreamstone 閱讀(3797) 評論(2)  編輯  收藏 所屬分類: 搜索引擎lucence

    評論

    # re: lucene的豐富的各種查詢(二) 2008-04-22 22:03 啊新

    你的lucene是舊版本的吧,現在已經有2.0以上了。不過仍然謝謝你的總結。  回復  更多評論   

    # re: lucene的豐富的各種查詢(二) 2012-08-12 18:00 海波

    re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)re: lucene的豐富的各種查詢(二)海波倒薩 30263026  回復  更多評論   

    主站蜘蛛池模板: 日本免费一区二区三区最新vr| 国产麻豆视频免费观看| 亚洲国产香蕉人人爽成AV片久久| 亚洲另类自拍丝袜第五页| 四虎在线免费播放| 99亚洲乱人伦aⅴ精品| 又粗又大又硬又爽的免费视频 | 日韩在线视频线视频免费网站| 国产高清免费在线| 国产成人综合亚洲一区| 亚洲欧洲自拍拍偷精品 美利坚| 一级成人毛片免费观看| 国产亚洲精品va在线| 一级毛片免费观看不卡的| 亚洲精品电影天堂网| 国产成人A在线观看视频免费 | 国产亚洲精aa成人网站| 三上悠亚在线观看免费| 精品亚洲国产成AV人片传媒| 国产人在线成免费视频| 国产亚洲精品欧洲在线观看| 国产啪亚洲国产精品无码| 久久久久久AV无码免费网站下载| 亚洲冬月枫中文字幕在线看| 午夜免费不卡毛片完整版| eeuss影院www天堂免费| 亚洲综合激情九月婷婷 | 日本在线免费观看| 亚洲制服丝袜一区二区三区| 亚洲av日韩av欧v在线天堂| 免费看一区二区三区四区| 亚洲毛片基地4455ww| 亚洲熟妇少妇任你躁在线观看无码| 久久青草国产免费观看| 亚洲精品av无码喷奶水糖心| 亚洲日韩欧洲无码av夜夜摸| 国产精品怡红院永久免费| 国产亚洲精品仙踪林在线播放| 亚洲成人精品久久| 四虎在线播放免费永久视频| 久久国产乱子伦精品免费看|