oracle学习笔记-1
2013-11-10 20:25
323 查看
lucene第一步---4.Field.Store解析
Store
COMPRESS:压缩保存。用于长文本或二进制数据
YES:保存
NO:不保存
具体理解当然是给出示例了:
由此可以看出Field.Store的设置与否与是否可以搜索到无关。
这里整理一下
Field.Store
:YES 可以搜索,保存原值
:NO 可以搜索,不保存原值
:COMPRESS 可以搜索,压缩保存原值
这里需要注意的是在实际使用中,并不建议使用COMPRESS,存在压缩和解压过程,效率低下,对于大文本尽量使用NO
还有一点就是是否可被搜索与Store无关,只与Index有关。
这里使用的是lucene 2.3.2
本系列教程如果没有明确指出都是沿用此版本
Store
COMPRESS:压缩保存。用于长文本或二进制数据
YES:保存
NO:不保存
具体理解当然是给出示例了:
package demo.first; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Index; import org.apache.lucene.document.Field.Store; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.store.LockObtainFailedException; public class TestFieldStore { /** * 索引文件的存放位置 */ String path = "D://workspace//fwk//lucenedemo//firstLuceneIndex"; public void createLuceneIndex(){ try { IndexWriter iw = new IndexWriter(path,new StandardAnalyzer(),true); Document doc = new Document(); //Store.YES 保存 可以查询 可以打印内容 Field storeYes = new Field("storeyes","storeyes",Store.YES,Index.TOKENIZED); //Store.NO 不保存 可以查询 不可打印内容 由于不保存内容所以节省空间 Field storeNo = new Field("storeno","storeno",Store.NO,Index.TOKENIZED); //Store.COMPRESS 压缩保存 可以查询 可以打印内容 可以节省生成索引文件的空间 Field storeCompress = new Field("storecompress","storecompress",Store.COMPRESS,Index.TOKENIZED); doc.add(storeYes); doc.add(storeNo); doc.add(storeCompress); iw.addDocument(doc); iw.optimize(); iw.close(); } catch (CorruptIndexException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (LockObtainFailedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void testSearch(){ try { IndexSearcher iser = new IndexSearcher(path); /* * Store.YES 采用保存模式,可以查询到,并且可以打印出内容 */ System.out.println("---storeYes"); QueryParser queryParser1 = new QueryParser("storeyes",new StandardAnalyzer()); Hits hits1 = iser.search(queryParser1.parse("storeyes")); for(int i = 0;i<hits1.length();i++){ System.out.println("id :"+hits1.id(i)); System.out.println("doc :"+hits1.doc(i)); System.out.println("context :"+hits1.doc(i).get("storeyes")); System.out.println("score :"+hits1.score(i)); } /* * Store.NO 采用不保存模式,可以查询到,但是不能打印出内容 */ System.out.println("---storeNo"); QueryParser queryParser2 = new QueryParser("storeno",new StandardAnalyzer()); Hits hits2 = iser.search(queryParser2.parse("storeno")); for(int i = 0;i<hits2.length();i++){ System.out.println("id :"+hits2.id(i)); System.out.println("doc :"+hits2.doc(i)); System.out.println("context :"+hits2.doc(i).get("storeno")); System.out.println("score :"+hits2.score(i)); } /* * Store.COMPRESS 采用压缩保存模式,可以查询到,并且可以打印出内容 */ System.out.println("---storeCompress"); QueryParser queryParser3 = new QueryParser("storecompress",new StandardAnalyzer()); Hits hits3 = iser.search(queryParser3.parse("storecompress")); for(int i = 0;i<hits3.length();i++){ System.out.println("id :"+hits3.id(i)); System.out.println("doc :"+hits3.doc(i)); System.out.println("context :"+hits3.doc(i).get("storecompress")); System.out.println("score :"+hits3.score(i)); } iser.close(); } catch (CorruptIndexException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { TestFieldStore tfs = new TestFieldStore(); tfs.createLuceneIndex(); tfs.testSearch(); } }
由此可以看出Field.Store的设置与否与是否可以搜索到无关。
这里整理一下
Field.Store
:YES 可以搜索,保存原值
:NO 可以搜索,不保存原值
:COMPRESS 可以搜索,压缩保存原值
这里需要注意的是在实际使用中,并不建议使用COMPRESS,存在压缩和解压过程,效率低下,对于大文本尽量使用NO
还有一点就是是否可被搜索与Store无关,只与Index有关。
这里使用的是lucene 2.3.2
本系列教程如果没有明确指出都是沿用此版本
相关文章推荐
- Oracle学习笔记之二----SQL
- oracle学习笔记
- ORACLE学习笔记
- Oracle学习笔记之Oracle的对象类型
- oracle学习笔记4:性能调优
- oracle学习笔记(四)--转换函数
- Oracle学习笔记:oracle服务在linux平台的启动问题
- Oracle学习笔记:通过种子数据库设置dbid为指定值
- Oracle学习笔记:利用oracle的 “表类型”复合变量,实现临时表的功能
- Oracle学习笔记安装篇之在Redhat Enterprise Linux 5.3下安装Oracle10g Release2
- oracle学习笔记之_控制文件的备份
- Oracle学习笔记:备份、还原、恢复的一点理解 (转@)
- oracle学习笔记——视图
- Oracle学习笔记(4) 在PLSQL中更改数据和管理事务
- Oracle学习笔记(第四章) 在PLSQL中更改数据和管理事务
- Oracle学习笔记(九)
- oracle学习笔记_触发器
- Oracle学习笔记之基础概念
- Oracle学习笔记之二SQL更新数据和一些常用函数
- oracle学习笔记(11)——数据库实例