【发布时间】:2017-01-24 09:29:38
【问题描述】:
我们正在使用 Lucene.net 测试版 - Lucene.net 48。我们希望使用 lucene 查询对象为 not like 子句提供支持。我们使用WildcardQuery 类来支持通配符,并使用布尔子句作为“BooleanClause.Occur.MUST_NOT”。
它正在生成查询 --> : "-company:lucene*"。
它在查询前有'-'符号,但它不返回公司不像lucene* 的数据。理想情况下,它应该返回 'elastic'、'mongodb' 等。
WildcardQuery qfWildcard = new WildcardQuery(new Term("company","lucene*"));
BooleanQuery bq = new BooleanQuery();
bq.Add(qfWildcard, BooleanClause.Occur.MUST_NOT);
另一方面,WildcardQuery 和 MUST 子句正在工作。
查询 --> : "+company:lucene*"。
它在查询前有“+”号,它正在返回公司类似于“lucene*”的数据。它正在返回“lucene”、“lucene.net”等。
WildcardQuery qfWildcard = new WildcardQuery(new Term("company","lucene*"));
BooleanQuery bq= new BooleanQuery();
bq.Add(qfWildcard, BooleanClause.Occur.MUST);
如果有人知道使用WildcardQuery 类或任何其他类或任何替代方法来解决问题的解决方案,请帮助我。
如果有办法支持,也请告诉我 - 'Is Null' and 'Is Not Null' 子句。
【问题讨论】:
-
'Is Null'和'Is Not Null',可以通过将所有字段存储在索引文档中来支持。但是,我正在寻找文档中是否存在基于语法/api 的字段。如果索引文档中不存在某个字段,则表示它为“空”。并且,如果索引文档中存在字段,则表示“不为空”。在 lucene.net 48 版本中没有找到任何 api/class。
标签: search lucene search-engine lucene.net