问题描述
- lucene多条件搜索时or与and问题
-
lucene版本:3.6
分词器:ansj_seg-master在lucene多条件搜索时,想根据两个字段去做搜索,创建的Query如下所示
Analyzer analyzer = new AnsjAnalysis(); String paramsStr[] = new String[] { "CA0000001", "特惠" }; String keys[] = new String[] {"code", "name" }; BooleanClause.Occur occur[] = new BooleanClause.Occur[] { BooleanClause.Occur.MUST, BooleanClause.Occur.MUST}; Query query = MultiFieldQueryParser.parse(Version.LUCENE_36, paramsStr, keys, occur, analyzer);
索引中确定有code为"CA0000001",name为"特惠"的数据,但就是为BooleanClause.Occur.MUST时找不到,如果为BooleanClause.Occur.SHOULD,则可以查询到那条数据
请问各位要怎么解决?
解决方案
should戴表两个字段中必须有一个..must是必须都存在...你看看大小写啥的..有可能建索引的时候全都小写了
解决方案二:
分词器是全都转换成小写的,所以肯定是统一了的
解决方案三:
好像发现问题了,MultiFieldQueryParser是分词查询,而建索引时那个code字段是Index.NOT_ANALYZED的,所以不行。感谢ansj提醒
时间: 2024-09-26 14:24:00