lucene2.0中的查询疑问
程序员文章站
2022-06-12 12:18:24
...
环境: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)加城市的限制条件
还是有其他的更好的方法,请指点...
我通过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)加城市的限制条件
还是有其他的更好的方法,请指点...
下一篇: ゞC++ - 毞記 - 标题ゞ
推荐阅读