请教关于lucene多字段多关键字查询的问题!!~

danns888 2011-11-17 01:24:55
现在有个页面有两个关键字输入框, 客户的需求是按照输入框关键字按照空格分割进行并且查询文章的标题和内容, 比如是输入A B C,那么结果集应该是文章的标题含义A, B, C 或者文章的内容含有A, B, C, 现在我做出的效果是文章的标题含有A或者B或者C, 文章的标题也是, 不知道各位大虾有没有碰到过类似的需求。
代码如下, 红色部分是我关注的代码,
Analyzer queryAnalyzer = PaodingAnalyzer.queryMode(PaodingUtil.getPaoding());
// Analyzer queryAnalyzer = new PaodingAnalyzer();

QueryParser parser = null;
BooleanQuery luceneQuery = new BooleanQuery();

switch (status)
{
case 1:
parser = new QueryParser(ModelConstants.DIV_INDEX_PAGE_TITLE, queryAnalyzer);
break;
case 2:
parser = new QueryParser(ModelConstants.DIV_INDEX_CONTENT, queryAnalyzer);
break;
case 3:
parser = new QueryParser(ModelConstants.DIV_INDEX_PAGE_AUTHOR, queryAnalyzer);
break;
case 4:
//parser = new MultiFieldQueryParser(, queryAnalyzer);
// String[] queries = keyword.split("\\s");
BooleanClause.Occur[] clauses = { BooleanClause.Occur.MUST, BooleanClause.Occur.MUST };
Query query = MultiFieldQueryParser.parse(new String[]{keyword, keyword}, new String[]{ ModelConstants.DIV_INDEX_PAGE_TITLE, ModelConstants.DIV_INDEX_CONTENT }, clauses, queryAnalyzer);
luceneQuery.add(query, BooleanClause.Occur.MUST);
break;

default:
parser = new MultiFieldQueryParser(
new String[]
{ ModelConstants.DIV_INDEX_PAGE_TITLE, ModelConstants.DIV_INDEX_CONTENT, ModelConstants.DIV_INDEX_PAGE_AUTHOR },
queryAnalyzer);
break;
}
...全文
201 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jusbie 2012-06-18
  • 打赏
  • 举报
回复
楼主这个问题肿么解决的?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧