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提醒