Lucene初步搜索

Lucene在创立索引后,要进行搜索查询

搜索大概需要5部,

1,读取索引。

2,查询索引。

3,匹配数据。

4,封装匹配结果。

5,获取需要的值。

语言表达能力不好,大概就是分着几部吧。

/**
     * 搜索
     */
    public void searcher(){
        //1,创建Directory
        Directory directory = null;
        IndexReader reader = null;
        try {
            directory = FSDirectory.open(Paths.get("D://lucene//index"));
            //2,创建IndexReader
             reader = DirectoryReader.open(directory);
            //3,根据IndexReader创建IndexSearcher
             IndexSearcher searcher = new IndexSearcher(reader);
            //4,创建搜索的query
             QueryParser parser = new QueryParser("content",new StandardAnalyzer());
             Query query = parser.parse("SELECT");
            //5,根据search搜索并返回TopDocs
             TopDocs tds = searcher.search(query, 10);
            //6,根据TopDocs获取ScoreDoc对象
             ScoreDoc[] sds = tds.scoreDocs;
             for(ScoreDoc sd:sds){
                //7,根据search和ScordDoc对象获取具体的Document对象
                 Document d = searcher.doc(sd.doc);
                //8,根据Document对象获取需要的值
                 System.out.println(d.get("filename")+"["+d.get("path")+"]");
             }
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                reader.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }

搜索的对象“SELECT”,执行,查询结果如下

原文地址:https://www.cnblogs.com/invban/p/6145998.html