论坛首页 Java企业应用论坛

lucene2.0中的查询疑问

浏览 2983 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-04-09  
环境:lucene2.0

我通过lucene把数据库中需要全文检索的表都建立了索引

其中包括:

id:主键
title:标题
content:描述
keywords:关键字
bigClass:大类
smailClass:小类
city: 城市

需求:
现在客户从客户端输入一个关键字k,那么,可以在title/content/keywords里面匹配,关系是or,就是说有一个满足就行了

bigClass/smailClass/city是and的关系

相当于sql: select * from table where (title like '%k%' or content like '%k%' or keywords like '%k%') and bigClass='大类' and smailClass='小类' and city='城市'


下面是我写的代码

String[] fields = {"title", "content","keywords"};//在title/content/keywords中找

BooleanClause.Occur[] flags = {BooleanClause.Occur.SHOULD,
              BooleanClause.Occur.SHOULD,
              BooleanClause.Occur.SHOULD};
query = MultiFieldQueryParser.parse(keywords, fields,flags,analyzer);

下面我就不怎么知道怎么写了:
if(bigClass!=null)加大类的限制条件
if(smailClass!=null)加小类的限制条件
if(city!=null)加城市的限制条件


还是有其他的更好的方法,请指点...

   发表时间:2007-06-09  
BooleanQuery mainQuery = new BooleanQuery();
mainQuery.add(query); //这里的query就是你代码里构造的
if(bigClass!=null){
   mainQuery.add(new TermQuery(new Term("bigClass","大类",BooleanClause.MUST)))
}
//if(city!=null)
//...
return mainQuery;
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics