fhqibjg
2013-06-08 08:23
采纳率: 50%
浏览 2.7k

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,则可以查询到那条数据

请问各位要怎么解决?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • ansj 2013-06-08 08:39
    已采纳

    should戴表两个字段中必须有一个..must是必须都存在...你看看大小写啥的..有可能建索引的时候全都小写了

    点赞 打赏 评论
  • fhqibjg 2013-06-08 08:47

    分词器是全都转换成小写的,所以肯定是统一了的

    点赞 打赏 评论
  • fhqibjg 2013-06-08 08:53

    好像发现问题了,MultiFieldQueryParser是分词查询,而建索引时那个code字段是Index.NOT_ANALYZED的,所以不行。感谢ansj提醒

    点赞 打赏 评论

相关推荐 更多相似问题