lucene中 上传 读取

1 上传到文件中

	
		static String doc1 = "hello world";
		static String doc2 = "hello java world";
		static String doc3 = "hello lucene world";
		private static final String PATH = "D:/Eclipse/work/2018.11.24/index/lucene";
		/**
		 * 1 将要查询的文本放到document中
		 * 2 创建IndexWriter对象
		 * 3 用indexWriter对象将 document 数据存入
		 * @throws IOException 
		 */
		public  static void createIndesWriter() throws IOException {
//			1)创建indexWriter对象 用来给将document写入内存
			Directory directory = FSDirectory.open(Paths.get(PATH));
			IndexWriterConfig indexWriterConfig = new IndexWriterConfig(new SimpleAnalyzer());
			IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig);
			System.out.println(indexWriter);
			
//			2)将文本写入每一个document的字段里面
			Document document1 = new Document();
			document1.add(new TextField("id", "1", Store.YES));
			document1.add(new TextField("title", "doc1", Store.YES));
			document1.add(new TextField("content", doc1, Store.YES));
			 
			Document document2 = new Document();
			document2.add(new TextField("id", "2", Store.YES));
			document2.add(new TextField("title", "doc2", Store.YES));
			document2.add(new TextField("content", doc2, Store.YES));
			 
			Document document3 = new Document();
			document3.add(new TextField("id", "3", Store.YES));
			document3.add(new TextField("title", "doc3", Store.YES));
			document3.add(new TextField("content", doc3, Store.YES));
			
		
//			3)用indexWriter 对象将 document对象写入内存 
			indexWriter.addDocument(document1);
			indexWriter.addDocument(document2);
			indexWriter.addDocument(document3);
			indexWriter.commit();
			indexWriter.close();
			
			
		}

2 从文件中取出来

	public  static void  getReader() throws IOException, ParseException {
			//1)创建indexSearcher对象 
			Directory d = FSDirectory.open(Paths.get(PATH));//索引目录
			IndexReader reader = DirectoryReader.open(d);//索引读入器
			IndexSearcher indexSearcher = new IndexSearcher(reader);//索引搜索器

			//2)创建query对象
			String defaultStr = "content";//默认的搜索字段,如果搜索字段没有指定,就用默认的
			Analyzer analyzer = new SimpleAnalyzer();//用它对搜索条件进行分词
			QueryParser parser = new QueryParser(defaultStr, analyzer);	
			
			String  strParser = "content:java";
		    Query query =	parser.parse(strParser);

			//3)用indexSearcher对象吧query对象传入
		    TopDocs topDocs = indexSearcher.search(query, 10000);//查询前10000个数据
		    System.out.println("查询的总命中数是"+topDocs.totalHits);

			//4)搜索出对应的documentID,根据documentID找出对应的content
		    ScoreDoc[] scoreDocs = topDocs.scoreDocs;
		    for(ScoreDoc scoreDoc : scoreDocs) {
		    	int docID = scoreDoc.doc;//获取文档编号

		    	//5)将content传给前台
		    	//根据文档id找到对应文档内容
		    	Document document = indexSearcher.doc(docID);
		    	System.out.println(document.get("id")+" \r");
		    	System.out.println(document.get("title")+" \r");
		    	System.out.println(document.get("content")+" \r");
		    }
			
			
		}
		

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值