lucene建立索引和各种方式的搜索
来源:互联网 发布:nginx 伪静态配置 编辑:程序博客网 时间:2024/06/07 00:55
lucene建立索引、FuzzyQuery方式检索(可以简单地识别两个相近的词语)、PrefixQuery方式检索(前缀查询)、RangeQuery方式查询(在某个范围)、TermQuery方式查询(词条搜索)
lucene建立索引
package testindex;import java.io.IOException;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.index.IndexWriter;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;public class TestIndex { /** * user(id,name,address) * insert into user(id,name,address) values(1,'zhangsan','shanghaichangningqv'); * @throws IOException */ public static void main(String[] args) throws IOException { String [] ids={"1","2","3"}; String [] names={"zhangsan","lisi","wangwu"}; String [] addresses={"shanghai","beijing","guangzhou"}; String [] birthday={"19820903","19920603","19850603"}; Analyzer analyzer=new StandardAnalyzer(); String indexDir="C:/Users/yihong/Desktop/luceneindex"; Directory dir=FSDirectory.getDirectory(indexDir); //true 表示创建或覆盖当前索引;false表示对当前索引进行追加 //Default value is 128 IndexWriter writer=new IndexWriter(dir,analyzer,true,IndexWriter.MaxFieldLength.LIMITED); for(int i=0;i<ids.length;i++){ Document document=new Document(); document.add(new Field("id",ids[i],Field.Store.YES,Field.Index.ANALYZED)); document.add(new Field("name",names[i],Field.Store.YES,Field.Index.ANALYZED)); document.add(new Field("address",addresses[i],Field.Store.YES,Field.Index.ANALYZED)); document.add(new Field("birthday",birthday[i],Field.Store.YES,Field.Index.ANALYZED)); writer.addDocument(document); } writer.optimize(); writer.close(); }}
FuzzyQuery方式检索(可以简单地识别两个相近的词语)
package TestSercher;import java.io.IOException;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.index.Term;import org.apache.lucene.search.FuzzyQuery;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;public class TestFuzzyQuery { public static void main(String[] args) throws IOException { Analyzer analyzer=new StandardAnalyzer(); String indexDir="C:/Users/yihong/Desktop/luceneindex"; Directory dir=FSDirectory.getDirectory(indexDir); IndexSearcher searcher=new IndexSearcher(dir); ScoreDoc [] hits=null; Term term=new Term("name","zhangsan"); FuzzyQuery query=new FuzzyQuery(term); TopDocs topDocs=searcher.search(query, 10); hits=topDocs.scoreDocs; for(int i=0;i<hits.length;i++){ Document doc=searcher.doc(hits[i].doc);// System.out.print(hits[i].score+" "); System.out.print(doc.get("id")+" "); System.out.print(doc.get("name")+" "); System.out.print(doc.get("address")+" "); System.out.println(doc.get("birthday")+" "); } searcher.close(); dir.close(); }}
PrefixQuery方式检索(前缀查询)
package TestSercher;import java.io.IOException;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.PrefixQuery;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;public class TestPrefixQuery { public static void main(String[] args) throws IOException { Analyzer analyzer=new StandardAnalyzer(); String indexDir="C:/Users/yihong/Desktop/luceneindex"; Directory dir=FSDirectory.getDirectory(indexDir); IndexSearcher searcher=new IndexSearcher(dir); ScoreDoc [] hits=null; Term term=new Term("name","zh"); PrefixQuery query=new PrefixQuery(term); TopDocs topDocs=searcher.search(query, 10); hits=topDocs.scoreDocs; for(int i=0;i<hits.length;i++){ Document doc=searcher.doc(hits[i].doc);// System.out.print(hits[i].score+" "); System.out.print(doc.get("id")+" "); System.out.print(doc.get("name")+" "); System.out.print(doc.get("address")+" "); System.out.println(doc.get("birthday")+" "); } searcher.close(); dir.close(); }}
RangeQuery方式查询(在某个范围)
package TestSercher;import java.io.IOException;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.RangeQuery;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;public class TestRangeQuery { public static void main(String[] args) throws IOException { Analyzer analyzer=new StandardAnalyzer(); String indexDir="C:/Users/yihong/Desktop/luceneindex"; Directory dir=FSDirectory.getDirectory(indexDir); IndexSearcher searcher=new IndexSearcher(dir); ScoreDoc [] hits=null; Term beginTerm=new Term("birthday","19820720"); Term endTerm=new Term("birthday","19830130"); RangeQuery query=new RangeQuery(beginTerm,endTerm,true); TopDocs topDocs=searcher.search(query, 2); hits=topDocs.scoreDocs; for(int i=0;i<hits.length;i++){ Document doc=searcher.doc(hits[i].doc);// System.out.print(hits[i].score+" "); System.out.print(doc.get("id")+" "); System.out.print(doc.get("name")+" "); System.out.print(doc.get("address")+" "); System.out.println(doc.get("birthday")+" "); } searcher.close(); dir.close(); }}
TermQuery方式查询(词条搜索)
package TestSercher;import java.io.IOException;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;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;public class TestSercher { public static void main(String[] args) throws IOException { Analyzer analyzer=new StandardAnalyzer(); String indexDir="C:/Users/yihong/Desktop/luceneindex"; Directory dir=FSDirectory.getDirectory(indexDir); IndexSearcher searcher=new IndexSearcher(dir); ScoreDoc [] hits=null; Term term=new Term("address","beijing"); TermQuery query=new TermQuery(term); TopDocs topDocs=searcher.search(query, 10); hits=topDocs.scoreDocs; for(int i=0;i<hits.length;i++){ Document doc=searcher.doc(hits[i].doc); System.out.print(hits[i].score+" "); System.out.print(doc.get("id")+" "); System.out.print(doc.get("name")+" "); System.out.print(doc.get("address")+" "); System.out.println(doc.get("birthday")+" "); } searcher.close(); dir.close(); }}
阅读全文
0 0
- lucene建立索引和各种方式的搜索
- Lucene 建立索引和搜索
- lucene的建立索引,搜索,中文分词
- Lucene索引的建立
- 使用Lucene对建立的索引进行搜索
- Lucene以及索引和搜索的流程
- Lucene 建立索引数据库 实现搜索网页
- lucene 建立多索引搜索器
- Lucene的平行索引和同时搜索多个索引
- lucene-对多个索引的搜索和多线程搜索
- lucene-对多个索引的搜索和多线程搜索
- lucene-对多个索引的搜索和多线程搜索
- Lucene 索引和搜索过程
- 【Lucene&&Solr】Lucene索引和搜索流程
- Lucene.Net索引的建立
- lucene界面索引的建立
- Lucene学习--索引的建立
- lucene建立索引的过程
- HDU-Oil Deposits (DFS,BFS,水题)
- Hadoop入门(四)之hadoop集群搭建(一主二从)
- 进程通信
- Linux系统中管理用户登录及登录信息的处理
- 2017 Multi-University Training Contest
- lucene建立索引和各种方式的搜索
- [Android Studio] 向您的项目添加 C 和 C++ 代码
- 输出重定向
- TCP建立和终止
- css-定位
- sql中文字段按照汉语拼音首字母排序
- wordpress 标签云小工具的优化样式详解
- leetcode(283). Move Zeroes
- react native学习笔记1——webstorm安装与配置