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”,执行,查询结果如下