Lucene搜索引擎入门写法

来源:互联网 发布:java就是业务逻辑吗 编辑:程序博客网 时间:2024/05/18 03:24


需要的jar包: 本文采用 lucene4.10.2 最好采用JDK1.7以上的版本进行测试。

.<dependency>  <groupId>org.apache.lucene</groupId>  <artifactId>lucene-core</artifactId>  <version>${lucene-version}</version>  </dependency>    <dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-analyzers-common</artifactId><version>${lucene-version}</version></dependency><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-queryparser</artifactId><version>${lucene-version}</version></dependency>


其中: <lucene-version>4.10.2</lucene-version>


入门代码:

package com.power.lencene;import java.io.File;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.document.FieldType;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;import org.apache.lucene.queryparser.classic.QueryParser;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.Sort;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.util.Version;/* 作者Gary Huang 博客地址 :http://blog.csdn.net/hfmbook 邮箱:834865081@qq.com**/public class LenceneDemo {static  String path = "d:/lencene" ; public static void main(String[] args) {try {String keyword = "文字Score" ;  Analyzer analyzer = new StandardAnalyzer(); Directory directory = FSDirectory.open(new File(path)) ; IndexReader indexReader = DirectoryReader.open(directory) ;IndexSearcher indexSearcher = new IndexSearcher(indexReader);QueryParser queryParser = new MultiFieldQueryParser(new String[] {  "content"  },analyzer);  Query query = queryParser.parse(keyword); Sort sort = new Sort() ;   TopDocs topDocs = indexSearcher.search(query, 5 , sort); ScoreDoc[] scoreDoces = topDocs.scoreDocs;for(ScoreDoc scoreDoc : scoreDoces){int docID = scoreDoc.doc ;Document document = indexSearcher.doc(docID);System.out.println( document.get("id") ) ;  System.out.println( document.get("content") ) ;  }indexReader.close(); } catch (Exception e) {e.printStackTrace();}}public static void writeIndex(){try {Analyzer analyzer = new StandardAnalyzer(); IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LATEST, analyzer);    Directory directory = FSDirectory.open(new File(path)) ; IndexWriter iwriter = new IndexWriter(directory, indexWriterConfig) ; Document doc = new Document();FieldType fieldType = new FieldType(); fieldType.setIndexed(true);fieldType.setStored(true); doc.add(new Field("id", "1", fieldType ) ) ;  doc.add(new Field("content", "Lucene文字这个相关度排序是基于内部的Score和DocID,Score又基于关键词的内部评分和做索引时的boost。默认Score高的排前面,如果Score一样,.”", fieldType)); iwriter.addDocument(doc);iwriter.close() ;} catch (Exception e) {e.printStackTrace();}}}


0 0
原创粉丝点击