lucene全文检索多种查询检索简单案例
针对lucene全文检索引擎写一下多种查询检索的方式
这里采用的是英文分词,单独写了一篇关于中文分词与高亮显示,如下:
lucene全文检索之 中文分词 以及 高亮显示,点击进入
另外分享一个 lucene索引库查看器 ,点击进入
lucene官网 http://lucene.apache.org这里写链接内容
首先需要引入lucene的maven依赖,如下:
<dependency><groupId>org.apache.lucenegroupId><artifactId>lucene-coreartifactId><version>5.3.1version>
dependency><dependency><groupId>org.apache.lucenegroupId><artifactId>lucene-queryparserartifactId><version>5.3.1version>
dependency><dependency><groupId>org.apache.lucenegroupId><artifactId>lucene-analyzers-commonartifactId><version>5.3.1version>
dependency>
下面我就直接贴代码吧,如下:
package luceneDemo;import java.io.IOException;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.IntField;
import org.apache.lucene.document.TextField;
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.index.Term;
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.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.search.TermRangeQuery;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.search.NumericRangeQuery;
import org.apache.lucene.search.PrefixQuery;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;/*** 全文检索案例* @author mszhou*/
public class luceneDemo {/*** 演示将数据写入索引文件中* 在项目中我们会定时将数据写入索引文件中,* 然后在索引文件中进行搜索,这样比在数据库中搜索效率高的多,* 而且检索远比数据库的模糊匹配强大的多,这也是检索工具牛逼之处* * 需要注意的是,如果在项目中定时写入索引,* 需要判断下该数据是否存在,存在则修改,不存在再进行新增* * @param luceneDir 该参数表示索引所存放的目录*/public static void writeIndex(String luceneDir){IndexWriter writer = null;//声明创建索引写入器 try{//创建索引目录 , 这里参数luceneDir 表示索引存放目录Directory dir=FSDirectory.open(Paths.get(luceneDir));//创建标准分词器(一般英文使用这个,不适合中文使用)Analyzer analyzer=new StandardAnalyzer(); // 标准分词器IndexWriterConfig iwc=new IndexWriterConfig(analyzer);//创建索引写入器实例,通过IndexWriterConfig设置相关配置writer=new IndexWriter(dir, iwc);//=== 这里造一些数据用作演示,也可以直接读取数据库中的数据 开始========List
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
