Mar*_*gun 4 string lucene indexing field sitecore
我正在使用FieldQuery对象创建Sitecore.Ecommerce.Search.Query.然后我使用LuceneQueryBuilder类将Sitecore查询转换为Lucene.Net.Search.Query.除了我想要在空字符串上匹配的字段之外,查询的所有内容都能正常工作.
所以...这有效:
new FieldQuery(FieldName, "1", MatchVariant.NotEquals)
但这不是:
new FieldQuery(FieldName, string.Empty, MatchVariant.NotEquals)
我已经反映了Sitecore.Ecommerce程序集和Lucene.Net程序集,但我没有发现任何明显的问题.但是,当我查看在Lucene查询中创建和使用的Term时,它看起来像这样:
-FieldName:
我认为这是不正确的...但也许它是正确的,我只是没有正确的字段索引设置......我不确定是诚实的.
任何帮助是极大的赞赏.
谢谢!
Lucene并不真正支持搜索null/empty值.毕竟,没有任何索引可供查找.Lucene使用倒排索引,这使得某些类型的查询(包括纯粹的否定查询和搜索空值)变得困难甚至不可能.
如果需要搜索某些字段为空的文档,则应在字段中存储默认值(例如"NULL"),您可以搜索该字段.
也就是说,你可以创造
new RangeQuery(FieldName, null, null, true, true);
它构造一个具有开放上限和下限的范围查询,因此它匹配任何具有值的内容.
这不是一个很好的方法,但也没有只是否定的质疑.