lucene Query搜索
2017-08-14 23:28
108 查看
WildcardQuery通配符查询,给整个文本建立索引,通过通配符匹配搜索,通过通配符的全文搜索
WildcardQuery通配符查询
给整个文本建立索引
通过通配符匹配搜索
通过通配符的全文搜索
WildcardQuery通配符查询
package TestQuery; 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.BooleanClause; import org.apache.lucene.search.BooleanQuery; 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.search.WildcardQuery; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; public class TestBooleanQuery { 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 nterm=new Term("name","*g??"); WildcardQuery wildcardQuery=new WildcardQuery(nterm); Term aterm=new Term("address","tianjing"); TermQuery termQuery=new TermQuery(aterm); BooleanQuery query=new BooleanQuery(); query.add(wildcardQuery, BooleanClause.Occur.SHOULD); query.add(termQuery, BooleanClause.Occur.MUST_NOT); 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(); } }
给整个文本建立索引
package TestQuery; import java.io.File; import java.io.FileReader; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; impor 4000 t 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 TestFileReaderForIndex { public static void main(String[] args) throws IOException { File file=new File("F:/java学习/java搜索及网页爬虫/01、Lucene视频教程/01 lucene基础/code/data.txt"); FileReader fRead=new FileReader(file); char [] chs=new char [60000]; fRead.read(chs); String strtemp=new String(chs); String [] strs=strtemp.split("Database: Compendex"); System.out.println(strs.length); for(int i=0;i<strs.length;i++){ strs[i]=strs[i].trim(); } Analyzer analyzer=new StandardAnalyzer(); String indexDir="C:/Users/yihong/Desktop/luceneindex"; Directory dir=FSDirectory.getDirectory(indexDir); IndexWriter writer=new IndexWriter(dir,analyzer,false,IndexWriter.MaxFieldLength.UNLIMITED); for(int i=0;i<strs.length;i++){ Document document=new Document(); document.add(new Field("contents",strs[i],Field.Store.YES,Field.Index.ANALYZED)); writer.addDocument(document); } writer.optimize(); writer.close(); dir.close(); System.out.println("index ok!"); } }
通过通配符匹配搜索
package TestQuery; 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.TopDocs; import org.apache.lucene.search.WildcardQuery; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; public class TestWildcardQuery { 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","*g???"); WildcardQuery query=new WildcardQuery(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(); } }
通过通配符的全文搜索
package TestQuery; 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 TestWildcardQuery1 { 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("contents","modeling"); // WildcardQuery query=new WildcardQuery(term); TermQuery query=new TermQuery(term); TopDocs topDocs=searcher.search(query, 126); 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.println(doc.get("contents")+" "); } searcher.close(); dir.close(); } }
相关文章推荐
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- 本人即将筹备败家日志,敬请期待!
- IE:使用搜索助手
- PostgreSQL教程(八):索引详解
- Oracle外键不加索引引起死锁示例
- oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .
- 用SQL建立索引的方法步骤
- SQL2005重新生成索引的的存储过程 sp_rebuild
- SQL效率提升之一些SQL编写建议并有效利用索引
- SQLSERVER的非聚集索引结构深度理解
- SQL Server误区30日谈 第8天 有关对索引进行在线操作的误区
- SQL Server 索引介绍
- 在SQL Server 2005所有表中搜索某个指定列的方法
- SqlServer索引的原理与应用详解
- SqlServer 索引自动优化工具
- mysql 中存在null和空时创建唯一索引的方法
- 详解sqlserver查询表索引
- mysql中索引与FROM_UNIXTIME的问题
- MySQL常用的建表、添加字段、修改字段、添加索引SQL语句写法总结
- 优化 SQL Server 索引的小技巧