lucene学习之多样化查询
来源:互联网 发布:吴知力图片 编辑:程序博客网 时间:2024/04/29 16:37
lucend的多样化查询主要是通过一些内置的QUERY类型来实现:
TermQuery:进行项搜索
Term t = new Term("filename","4167");Query query = new TermQuery(t);TopDocs docs = searcher.search(query, 100);System.out.println("一共搜索到结果:"+docs.totalHits+"条");
TermRangeQuery:在指定范围内搜索
TermRangeQuery query = TermRangeQuery.newStringRange("filename","4193","4198",true,true);
//查找文件名域值为4193到4198内的索引
NumericRangeQuery:在指定数字范围内进行搜索
prefixQuery:通过字符串搜索
BooleanQuery:组合查询
PhaseQuery:短语搜索
FuzzyQuery:搜索类似项
import java.nio.file.Paths;import org.apache.lucene.analysis.core.*;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.*;import org.apache.lucene.index.*;import org.apache.lucene.queryparser.classic.QueryParser;import org.apache.lucene.search.*;import org.apache.lucene.store.*;import org.apache.lucene.util.Version;import junit.framework.TestCase;public class BasicSearchTest extends TestCase{public static void main(String[] args) throws Exception {// TODO Auto-generated method stub//testTerm();testQueryParser();}public static void testTerm() throws Exception{//查找一个term并使用Junit来测试Directory dir = FSDirectory.open(Paths.get("G:\\luceneout"));DirectoryReader reader = DirectoryReader.open(dir);IndexSearcher searcher = new IndexSearcher(reader);Term t = new Term("filename","4167");Query query = new TermQuery(t);TopDocs docs = searcher.search(query, 100);System.out.println("一共搜索到结果:"+docs.totalHits+"条");assertEquals("找到了4167",4,docs.totalHits);t = new Term("filename","4206");docs = searcher.search(new TermQuery(t), 100);System.out.println("一共搜索到结果:"+docs.totalHits+"条");assertEquals("找到了4206",4,docs.totalHits);dir.close();}public static void testQueryParser() throws Exception{Directory dir = FSDirectory.open(Paths.get("G:\\luceneout"));DirectoryReader reader = DirectoryReader.open(dir);IndexSearcher searcher = new IndexSearcher(reader);QueryParser parser = new QueryParser("content",new StandardAnalyzer());Query query = parser.parse("数据挖掘");TopDocs docs = searcher.search(query, 10);System.out.println("一共搜索到结果2:"+docs.totalHits+"条");assertEquals(216,docs.totalHits);Document d = searcher.doc(docs.scoreDocs[0].doc);System.out.print(d.get("path"));//assertEquals("找到交通规则",d.get("content"));}public void testTermRangeQuery() throws Exception{Directory dir = FSDirectory.open(Paths.get("G:\\luceneout"));IndexReader reader = DirectoryReader.open(dir);TermRangeQuery query = TermRangeQuery.newStringRange("filename","4193","4198",true,true);//指定项范围内搜索//NumericRangeQuery query = NumericRangeQuery.newIntRange("filename",(Integer)4193,(Integer)4198,true,true);//指定数字范围内搜索IndexSearcher searcher = new IndexSearcher(reader);TopDocs hits = searcher.search(query, 3);System.out.println("一共搜索到结果3:"+hits.totalHits+"条");dir.close();}}总之就是查询方式的多样化
0 0
- lucene学习之多样化查询
- 9、索引库的查询三之:Lucene的多样化查询
- lucene学习之查询
- Lucene学习总结之九:Lucene的查询对象(1)
- Lucene学习总结之九:Lucene的查询对象(2)
- Lucene学习总结之九:Lucene的查询对象(3)
- Lucene学习总结之九:Lucene的查询对象(1)
- Lucene学习总结之九:Lucene的查询对象(2)
- Lucene学习总结之九:Lucene的查询对象(3)
- Lucene学习笔记之(五)lucene的特殊查询
- Lucene学习笔记之(六)lucene的中文查询
- Lucene学习总结之九:Lucene的查询对象(1)
- Lucene学习总结之九:Lucene的查询对象(2)
- Lucene学习总结之九:Lucene的查询对象(3)
- LuceneInAction-多样化查询
- lucene学习--查询方式
- Lucene学习总结-查询
- 一步一步跟我学习lucene(16)---lucene搜索之facet查询查询示例(2)
- 摩尔斯码学习进度报告
- 高仿微信多图选择
- linux 命令系列之 正则表达式和通配符(53)
- 【1】java自定义排序
- UBOOT-1.1.6.错误集合
- lucene学习之多样化查询
- 目前状态
- 安卓学习第十五天:map和hashmap,equals()方法,toString()方法
- LA3644 X-Plosives
- 我理解的单反,单电和微单间的区别
- [ZJOI2008]骑士解题报告
- 剑指offer--面试题6:重建二叉树--Java实现
- hdu1561 树形背包初探
- rails 禁止打印出assets的日志请求