/** * 利用我们创建的索引,进行搜索 */ public void search(){ IndexReader indexReader = null; try { //1、创建Directory(去哪里搜索索引) Directory directory = FSDirectory.open(new File("e:/lucene/index01")); //2、创建IndexReader(读取索引的工具) indexReader = IndexReader.open(directory); //3、根据IndexReader创建IndexSearcher IndexSearcher indexSearcher = new IndexSearcher(indexReader); //4、创建搜索的Query(查询字符串) //4.1 创建QueryParser来确定要搜索文件的内容,第二个参数表示搜索的域 /** * QueryParser(Version matchVersion, String f, Analyzer a)方法解析: * 参数一:适配版本 * 参数二:搜索域(Field对象的key) * 参数三:分词器 */ QueryParser queryParser = new QueryParser(Version.LUCENE_35,"content", new StandardAnalyzer(Version.LUCENE_35)); //4.2 创建Query,表示搜索域为“content”中包含“公主”的文档 Query query = queryParser.parse("android"); //5、根据searcher搜索并返回TopDocs文档 TopDocs topDocs = indexSearcher.search(query, 10);//参数二:返回的搜索记录条数 //6、根据TopDocs获取ScoreDoc对象 ScoreDoc[] scoreDocs = topDocs.scoreDocs; //7、根据searcher和ScoreDoc对象获取具体的Document对象 if (scoreDocs!=null && scoreDocs.length>0){ for (ScoreDoc scoreDoc:scoreDocs){ //scoreDoc.doc:获取文档id Document document = indexSearcher.doc(scoreDoc.doc); //8、根据Document对象获取需要的值 System.out.println(document.get("fileName")+":"+document.get("filePath")); } } } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); }finally { //9、关闭IndexReader if (indexReader != null){ try { indexReader.close(); } catch (IOException e) { e.printStackTrace(); } } } }
2、学习Lucene3.5之搜索
最新推荐文章于 2018-03-14 21:28:09 发布