Hibernate 如何使用Lucene查询同时检查null和notnull的值?

Hibernate 如何使用Lucene查询同时检查null和notnull的值?,hibernate,lucene,hibernate-search,Hibernate,Lucene,Hibernate Search,如何使用TermQuery同时检查null和notnull值 1. TermQuery termQuery = new TermQuery(new Term("referencekuki.unit.name","Kuki")); 2. query.add(termQuery, BooleanClause.Occur.SHOULD); 3. BooleanQuery q = new BooleanQuery(); 4. q.add(new TermQuery(new Term("r

如何使用TermQuery同时检查null和notnull值

1. TermQuery termQuery = new TermQuery(new Term("referencekuki.unit.name","Kuki"));
2. query.add(termQuery, BooleanClause.Occur.SHOULD);
3. BooleanQuery q = new BooleanQuery();        
4. q.add(new TermQuery(new Term("reference", "null")),BooleanClause.Occur.SHOULD);
5. q.add(new TermQuery(new Term("reference", "null")),BooleanClause.Occur.MUST_NOT);
6. query.add(q, BooleanClause.Occur.MUST);
在表中,我们有一个引用列,它要么为null,要么为notnull,还有一个referencekuki列,它总是有数据,即Kuki

如果我只写第1行和第2行,那么它不会返回任何结果;但在DB中,我们有160条记录。我认为它应该得到所有行

如果我写1、2和4行,它将返回所有引用都为Null的结果

但我需要所有数据,无论引用是否为null。所以我尝试了上面的代码,但并没有给出期望的结果


有人能帮忙解决这个问题吗?

你用的是什么分析仪?如果您在
referencekuki.unit.name
字段上使用StandardAnalyzer,那么它将是小写的,如果您搜索“kuki”,您应该会看到结果。没有使用analyzer。仅@Field(index=index.YES,analyze=analyze.NO,store=store.NO)当未选择显式分析器时,表示您正在使用
StandardAnalyzer