<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 閱讀(3798) 評論(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  回復  更多評論   

    主站蜘蛛池模板: 精品一区二区三区高清免费观看| 91网站免费观看| 免费人妻无码不卡中文字幕系| 日韩亚洲国产综合久久久| 久久亚洲私人国产精品vA| 青青免费在线视频| 国产免费直播在线观看视频| 亚洲AV无码AV日韩AV网站| 国产免费久久精品| 免费人妻精品一区二区三区| 亚洲国产精品成人久久蜜臀 | 免费无码又爽又刺激网站直播| 在线观看日本免费a∨视频| 亚洲午夜成激人情在线影院| 你懂的免费在线观看| 亚洲福利视频一区| 57pao国产成视频免费播放| 亚洲一区在线视频观看| 国产精品网站在线观看免费传媒| 亚洲理论电影在线观看| 最近中文字幕完整免费视频ww | 黄视频在线观看免费| 久久精品国产亚洲网站| 久久久久久精品免费免费自慰| jlzzjlzz亚洲jzjzjz| 亚洲精品高清一二区久久| 337P日本欧洲亚洲大胆精品| 亚洲а∨天堂久久精品| 日本高清高色视频免费| 亚洲精品美女久久久久99| 131美女爱做免费毛片| 亚洲精华国产精华精华液网站| 99久久免费精品国产72精品九九| 亚洲激情校园春色| 亚洲三级在线免费观看| 亚洲日本一线产区和二线产区对比| 99无码人妻一区二区三区免费| 亚洲乱理伦片在线观看中字| 亚洲自偷自偷在线制服| 毛片a级毛片免费播放下载| 日韩亚洲产在线观看|