我想执行在Solr的文本字段的搜索。 我想返回所有匹配的范围内,或有没有价值。 这两个搜索词独立:
myfield:[start TO finish]
-myfield:[* TO *]
第一个返回范围内的所有比赛。 第二返回具有的“MyField的”字段没有值的所有比赛。 问题是把两者结合起来。
这将返回没有匹配:
myfield:[start TO finish] OR -myfield:[* TO *]
这将返回开始和结束,而不是空条目之间的匹配:
myfield:[start TO finish] OR (-myfield:[* TO *])
从毛里西奥·雅伯的解决方案为我,直到我已经包括了它充分的查询。 查询本身最多可包含三个字段与范围,并在中间某个地方Solr的无法处理它。 我设法用一个查询来解决这个问题:
(myfield:[start TO finish] OR (*:* NOT myfield:[* TO *]))
它woked即使在我复杂的查询,所以也许这将帮助别人。
我同意毛里西奥·雅伯的解决方案。
如果这能帮助我改变了我的初始查询:
DocSource:"P" OR ( DocSource:"E" AND (MyDate:[NOW TO *] OR -MyDate:[* TO *] ) )
至
DocSource:"P" OR ( DocSource:"E" AND -( -MyDate:[* TO NOW] AND MyDate:[* TO *] ) )
如预期中的Solr 4.1的第一个查询没有运行。