lucene的丰富的各种查询(二)
来源:互联网 发布:ps dr3插件for mac 编辑:程序博客网 时间:2024/06/15 14:26
lucene的查询用法包括了RangeQuery、prefixQuery、phraseQuery、wildcastQuery、fuzzyQuery
被索引查询的文件,按照需求自己构造即可。
package search;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.text.SimpleDateFormat;import java.util.Date;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.index.Term;import org.apache.lucene.search.FuzzyQuery;import org.apache.lucene.search.Hits;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.PhraseQuery;import org.apache.lucene.search.PrefixQuery;import org.apache.lucene.search.Query;import org.apache.lucene.search.RangeQuery;import org.apache.lucene.search.TermQuery;import org.apache.lucene.search.WildcardQuery;import org.apache.lucene.store.Directory;import org.apache.lucene.store.RAMDirectory;public class SearcherShow { private static Directory directory = new RAMDirectory(); public static void preIndex() throws Exception{ String fileName1 = "./data/searchShow.txt"; String fileName2 = "./data/searchShow2.txt"; String fileName3 = "./data/test.txt"; IndexWriter writer = new IndexWriter(directory,new StandardAnalyzer(),true); Document doc1 = getDocument(fileName1); Document doc2 = getDocument(fileName2); Document doc3 = getDocument(fileName3); writer.addDocument(doc1); writer.addDocument(doc2); writer.addDocument(doc3); writer.close(); } //先建立索引才能执行 //termQuery rangeQuery booleanQuery的查询在Searcher类中 public static void rangeQuery() throws Exception{ Term startTerm = new Term("lastmodified","20070620"); Term endTerm = new Term("lastmodified","20070622"); RangeQuery query = new RangeQuery(startTerm,endTerm,true); IndexSearcher searcher = new IndexSearcher(directory); Hits hits = searcher.search(query); prtHits(hits); } public static void prefixQuery() throws Exception{ Term term = new Term("fileName","searchShow.txt"); Term prefixterm = new Term("fileName","searchShow"); IndexSearcher searcher = new IndexSearcher(directory); Query query = new TermQuery(term); Query prefixQuery = new PrefixQuery(prefixterm); Hits hits = searcher.search(query); Hits prefixHits = searcher.search(prefixQuery); prtHits(hits); System.out.println("----------"); prtHits(prefixHits); } public static void phraseQuery() throws Exception{ IndexSearcher searcher = new IndexSearcher(directory); PhraseQuery query = new PhraseQuery(); query.setSlop(2); query.add(new Term("contents","quick")); query.add(new Term("contents","fox")); Hits hits = searcher.search(query); prtHits(hits); } public static void wildcardQuery() throws Exception{ IndexSearcher searcher = new IndexSearcher(directory); Query query = new WildcardQuery(new Term("contents","?ild*")); Hits hits = searcher.search(query); prtHits(hits); } public static void fuzzyQuery() throws Exception{ IndexSearcher searcher = new IndexSearcher(directory); Term term = new Term("contents","wuzza"); FuzzyQuery query = new FuzzyQuery(term); Hits hits = searcher.search(query); prtHits(hits); } public static Document getDocument(String fileName) throws Exception{ File file = new File(fileName); Document doc = new Document(); doc.add(Field.Keyword("fileName",file.getName() )); Date modified = new Date(file.lastModified()); String lastmodified = new SimpleDateFormat("yyyyMMdd").format(modified); doc.add(Field.Keyword("lastmodified", lastmodified)); BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(file))); StringBuffer sb = new StringBuffer(); String line = null; while ((line = br.readLine()) != null) { sb.append(line); } br.close(); doc.add(Field.Text("contents",sb.toString() )); return doc; } public static void prtHits(Hits hits) throws Exception{ for(int i=0;i<hits.length();i++){ Document doc = hits.doc(i); System.out.println(doc.get("fileName")); System.out.println(doc.get("lastmodified")); } } public static void main(String[] args) throws Exception{ preIndex();// rangeQuery();// prefixQuery();// phraseQuery();// wildcardQuery(); fuzzyQuery(); }}
0 0
- lucene的丰富的各种查询(二)
- lucene的丰富的各种查询(一)
- Lucene的各种查询
- 超级丰富的组件 各种语言
- Lucene的各种query
- lucene当中的各种query(三)
- 丰富的
- Ios5 基础二 –丰富的用户界面
- Lucene的查询语法!
- Lucene的组合查询
- Lucene的分页查询
- lucene的查询语法
- Lucene的查询语句
- Lucene的分页查询
- Lucene的组合查询
- lucene(索引的查询)
- Lucene学习笔记之(五)lucene的特殊查询
- Lucene学习笔记之(六)lucene的中文查询
- 获取设备上的调试信息与崩溃日志分析
- CodeForces - 616A Comparing Two Long Integers (模拟)比较两个数大小
- 数组转集合,集合转数组
- AB是一家?VAO与VBO
- C#目录文件监控
- lucene的丰富的各种查询(二)
- 设计模式之适配器模式
- OpenCV中CommandLineParser类
- 高通平台环境搭建,编译,系统引导流程分析
- C# out、ref关键字的用法和区别
- Dubbed Chronos单点WIFI定位
- 压缩感知(Compressive Sensing)学习
- 部署zookeeper,zkui,kafka
- 安装devstack 问题总结