Lucene-2.0学习文档(2)
来源:互联网 发布:数控编程图片 编辑:程序博客网 时间:2024/06/10 02:39
接http://www.javaeye.com/post/190334 IndexWriter(File path, Analyzer a, boolean create) IndexWriter(String path, Analyzer a, boolean create) 可见构造它需要一个索引文件目录,一个分析器(一般用标准的这个),最后一个参数是标识是否清空索引目录 它有一些设置参数的功能如:设置Field的最大长度 看个例子: [code] public void IndexMaxField() throws IOException { IndexWriter indexWriter= new IndexWriter("c://index",new StandardAnalyzer(),true); Document doc1 = new Document(); doc1.add(new Field("name1","程序员之家",Field.Store.YES,Field.Index.TOKENIZED)); Document doc2 = new Document(); doc2.add(new Field("name2","Welcome to the Home of programers",Field.Store.YES,Field.Index.TOKENIZED)); indexWriter.setMaxFieldLength(5); indexWriter.addDocument(doc1); indexWriter.setMaxFieldLength(3); indexWriter.addDocument(doc1); indexWriter.setMaxFieldLength(0); indexWriter.addDocument(doc2); indexWriter.setMaxFieldLength(3); indexWriter.addDocument(doc2); indexWriter.close(); } public void SearcherMaxField() throws ParseException, IOException { Query query = null; Hits hits = null; IndexSearcher indexSearcher= null; QueryParser queryParser= null; queryParser = new QueryParser("name1",new StandardAnalyzer()); query = queryParser.parse("程序员"); indexSearcher= new IndexSearcher("c://index"); hits = indexSearcher.search(query); System.out.println("您搜的是:程序员"); System.out.println("找到了"+hits.length()+"个结果"); System.out.println("它们分别是:"); for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); System.out.println(doc.get("name1")); } query = queryParser.parse("程序员之家"); indexSearcher= new IndexSearcher("c://index"); hits = indexSearcher.search(query); System.out.println("您搜的是:程序员之家"); System.out.println("找到了"+hits.length()+"个结果"); System.out.println("它们分别是:"); for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); System.out.println(doc.get("name1")); } queryParser = new QueryParser("name2",new StandardAnalyzer()); query = queryParser.parse("Welcome"); indexSearcher= new IndexSearcher("c://index"); hits = indexSearcher.search(query); System.out.println("您搜的是:Welcome"); System.out.println("找到了"+hits.length()+"个结果"); System.out.println("它们分别是:"); for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); System.out.println(doc.get("name2")); } query = queryParser.parse("the"); indexSearcher= new IndexSearcher("c://index"); hits = indexSearcher.search(query); System.out.println("您搜的是:the"); System.out.println("找到了"+hits.length()+"个结果"); System.out.println("它们分别是:"); for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); System.out.println(doc.get("name2")); } query = queryParser.parse("home"); indexSearcher= new IndexSearcher("c://index"); hits = indexSearcher.search(query); System.out.println("您搜的是:home"); System.out.println("找到了"+hits.length()+"个结果"); System.out.println("它们分别是:"); for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); System.out.println(doc.get("name2")); } } [/code] 它的运行结果为: 总结一下: 1.设置Field的长度限制只是限制了搜索。如果用了Field.Store.YES的话还是会 全部被保存进索引目录里的。 2.为什么搜the没有搜出来呢是因为lucene分析英文的时候不会搜索the to of 等无 用的词(搜这些词是无意义的)。 3.New StandardAnlayzer()对于英文的分词是按空格和一些无用的词,而中文呢是全部的单个 的字。 4.设置Field的最大长度是以0开头和数组一样。 程序员之家----------3--------程序员之 0 1 2 3 Welcome to the home of programmers------3------Welcome to the home of programmers 0 1 2 大家还可以试一下别的,以便加深一下印象 (未完)
- Lucene-2.0学习文档(2)
- Lucene-2.0学习文档(3)
- Lucene-2.0学习文档(4)
- Lucene-2.0学习文档(一)
- Lucene-2.0学习文档(二)
- Lucene-2.0学习文档(三)
- Lucene-2.0学习文档(五)
- Lucene-2.0学习文档(六)
- Lucene-2.0学习文档 1
- Lucene-2_0学习文档(四)
- Lucene学习(2)
- Lucene 深入学习(2)Lucene简介
- Lucene学习笔记之(二)索引文档的CRUD
- Lucene学习笔记之(三)文档加权
- Lucene学习笔记(2)
- Lucene学习笔记之(一)简介和向文档写索引并读取文档
- Lucene.Net学习系列(2)
- Lucene.NET学习笔记(2)
- Hibernate中Criteria的完整用法
- MSSQL清空当前数据库中所有用户表的数据,重置标识列
- C#2.0中,SerialPort运行方式
- 不要厚GDP轻GNP
- javascript 正则表达式 检索标红
- Lucene-2.0学习文档(2)
- 使用wildfire和linq在一个客户端整合QQ,MSN,Gtalk。
- Oracle数据库技术(1)
- Lucene-2.0学习文档(3)
- 开通博客
- C#正则表达式整理备忘【转】
- Lucene-2.0学习文档(4)
- SOMA
- SOA与遗留系统