我有一个对象Info 里面有id,title,state,content几个属性,现在我要查询content包含keyword关键字,而且state='2' or state='3'的Info 对象,例如这个语句"from Info where content like '%keyword%' and (state='2' or state='3')" 查询,请问该如何写,下面是我写的代码,不太对。
public List searchFiles(boolean flag,String keyword) {
// hitsList用来保存db的纪录,这些纪录可以通过查询结果取到
List hitsList = new ArrayList();
try {
IndexReader reader = IndexReader.open("E:/lunece/");
Searcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer();
//查询分析器
String querys[]={"2","3"};
String fields[]={"state","state"};
BooleanClause.Occur[] flags = {
BooleanClause.Occur.SHOULD,
BooleanClause.Occur.SHOULD};
MultiFieldQueryParser squery = new MultiFieldQueryParser(fields, analyzer);
Query query2 = squery.parse(querys, fields, flags, analyzer);
QueryParser parser = null;
if(flag){
parser = new QueryParser("title", analyzer);
}else{
parser = new QueryParser("content", analyzer);
}
// 解析查询关键字,比如输入的是以空格等分开的多个查询关键字,这里解析后,可以多条件查询
Query query = parser.parse(keyword);
BooleanQuery bquerymain = new BooleanQuery();
bquerymain.add(query, BooleanClause.Occur.MUST);
bquerymain.add(query2, BooleanClause.Occur.MUST);
// hits用来保存查询结果,这里的hits相当于sql中的result
Hits hits = searcher.search(bquerymain);
InfoDAO dao = new InfoDAO();
for (int i = 0; i < hits.length(); i++) {
Document doc = hits.doc(i);
// 获得article表的主健
String id = doc.get("id");
// 根据主健去db中取纪录,返回到hitsList中
Info obj = dao.get(id);
hitsList.add(obj);
}
searcher.close();
reader.close();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
catch (ParseException e) {
e.printStackTrace();
}
catch (NotExistedException e) {
e.printStackTrace();
}
for(Iterator itor=hitsList.iterator();itor.hasNext();){
Info obj = (Info)itor.next();
log.info("检索结果:"+obj.getId().longValue()+":"+obj.getTitle());
}
return hitsList;
}
分享到:
相关推荐
【lucene.net 全文检索】Lucene 是一个高性能、可扩展的信息检索库,它提供了强大的文本搜索功能。在.NET环境中,我们通常使用Lucene.Net,这是一个针对.NET Framework的移植版本。本文主要介绍如何在C#中使用Lucene...
Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它提供了高效、可扩展的搜索功能,被广泛应用于各种项目和产品中。本指南将详细介绍如何使用 Lucene 创建索引以及执行查询。 ### 1. 安装与引入 ...
Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,用于在各种应用中实现文本的索引和搜索。这篇博文将带你走进Lucene的世界,通过一个简单的"HelloWorld"程序来...
在"Lunece_search"的压缩包文件中,很可能包含了实现上述步骤的代码示例或者教程。通过阅读和实践这些示例,我们可以更好地理解和掌握Lunecy+ES在实际项目中的应用。 总的来说,Lunecy+ES的组合为开发者提供了一套...
尽管最初它不是一个完整的搜索引擎产品,而是一个用于构建搜索引擎的基础工具包,但随着时间的推移,它已经成为了许多搜索解决方案的核心。 在了解Lucene之前,我们需要回顾一下搜索引擎的历史。搜索引擎的发展始于...
lunece 学习笔记实用知识库分享知识分享 在本文中,我们将从多方面探索 Lucene 和 Solr 相关的知识点,并对其进行详细的分析和解释。 Lucene 和 Solr 的基本概念 Lucene 是一个基于 Java 的搜索引擎库,提供了...
Lucene.NET提供了高效、可扩展的文本搜索功能,使得开发者能够在他们的应用程序中集成强大的搜索能力。 描述中提到的“对SQL Server数据库表,用多线程,高速创建索引”,是指在构建Lucene.NET索引时,采用了多线程...
《深入理解Lucene 4.10.2:构建高效全文搜索引擎》 Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。在Java编程语言中,它提供了强大的文本搜索功能,广泛应用于各种信息检索系统。这次我们关注的是...
Lucene是一个高度优化的、用Java编写的搜索引擎库,它为开发人员提供了强大的文本搜索功能,使得构建高性能的全文检索应用变得简单。在这个最新的8.5.1版本中,我们可能看到一些性能提升、新特性以及错误修复。 ...
Lucene是Apache软件基金会的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。这个“Lucene检索”示例将引导我们理解如何利用Lucene进行基本的全文索引和搜索操作。 首先,我们需要了解Lucene的核心组件。...
Lucene是一个高性能、可伸缩的信息搜索(IR)库。它使你可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的成熟的、免费的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于在Apache软件许可 [ASF, ...
### Solr 学习知识点详解 #### 一、Solr 概述 - **定义**:Solr 是 Apache 下的一个顶级开源项目...Solr 作为一款企业级的搜索引擎,凭借其强大的功能和灵活性,在大数据时代的企业搜索解决方案中占据着重要的地位。
4. **Lunece** 注意,这里可能是打错了,正确应该是“Lucene”。在Lucene项目中,通常会包含许多示例代码,这些代码覆盖了从基础到进阶的各种用法。通过查看这些代码,你可以学习如何使用`TokenStream`进行自定义的...