初步认识Luence,简单按照官方文档做了个例子,大牛绕开,仅供小白路过参考。如有错误,欢迎指正批评。
建一个简单工程,并且加入这几个小奶瓶,如下图:
注:版本不同,可能对jdk的需求是不同的,这个需要注意,我在尝试的6.1.0的时候,在jdk1.7下会报错,在java8下就没问题。5.x的在1.7下应该没问题,具体需要自行百度。
然后根据官网例子,稍加修改,如下:本例子基于内存存储
//创建词法分析器 Analyzer analyzer = new StandardAnalyzer(); //确定索引文件的位置,方式如下为 内存存储 Directory directory = new RAMDirectory(); //Directory directory = FSDirectory.open("/tmp/testindex"); 本地文件存储 //索引文件的写入 IndexWriterConfig config = new IndexWriterConfig(analyzer); IndexWriter iwriter = new IndexWriter(directory, config); //创建文档 Document doc = new Document(); String text = "This is the text to be indexed."; doc.add(new Field("fieldname", text, TextField.TYPE_STORED)); String text1 = "This is the text to be indexed1."; doc.add(new Field("testcontent", text1, TextField.TYPE_STORED)); Document doc1 = new Document(); String text2 = "This is the text to be indexed2."; doc1.add(new Field("fieldname", text2, TextField.TYPE_STORED)); Document doc2 = new Document(); String text3 = "This is the text to be indexed3."; doc2.add(new Field("fieldname", text3, TextField.TYPE_STORED)); //将文档写入索引操作流 iwriter.addDocument(doc); iwriter.addDocument(doc1); iwriter.addDocument(doc2); iwriter.close(); System.out.println("----"); //索引目录流对象创建 DirectoryReader ireader = DirectoryReader.open(directory); //创建搜索对象 IndexSearcher isearcher = new IndexSearcher(ireader); //查询解析器,第一个参数是默认的搜索域 QueryParser parser = new QueryParser("fieldname", analyzer); Query query = parser.parse("indexed"); //模糊查询 Term term = new Term("fieldname","indexed"); FuzzyQuery fuzzyQuery=new FuzzyQuery(term); //执行搜索,取前一百条符合记录的数据//这里使用fuzzyQuery进行模糊查询,如果用query 只会出现一种结果“indexed” TopDocs top = isearcher.search(fuzzyQuery, 100); ScoreDoc[] hits = top.scoreDocs; for (int i = 0; i < hits.length; i++) { Document hitDoc = isearcher.doc(hits[i].doc); System.out.println("[Document="+hitDoc+",file:"+hitDoc.get("fieldname")+"]."); System.out.println("查询出的结果是:"+hitDoc.get("fieldname")); } ireader.close(); directory.close();
运行结果如下: