我想在Solr中的文本字段上执行搜索.我想返回范围内或没有值的所有匹配.这两个搜索词是独立的:
myfield:[start TO finish]
-myfield:[* TO *]
Run Code Online (Sandbox Code Playgroud)
第一个返回范围内的所有匹配项.第二个返回所有没有"myfield"字段值的匹配项. 问题是将这两者结合起来.
这不返回任何匹配项:
myfield:[start TO finish] OR -myfield:[* TO *]
Run Code Online (Sandbox Code Playgroud)
这将返回开始和结束之间的匹配,但不返回空条目:
myfield:[start TO finish] OR (-myfield:[* TO *])
Run Code Online (Sandbox Code Playgroud)
Sve*_*ana 10
Mauricio Scheffer的解决方案为我工作,直到我将其包含在完整查询中.查询本身最多可包含三个带范围的字段,而Solr中间某处无法处理它.我设法用下一个查询来解决它:
(myfield:[start TO finish] OR (*:* NOT myfield:[* TO *]))
Run Code Online (Sandbox Code Playgroud)
它甚至在我的复杂查询中也被唤醒,所以它可能会帮助其他人.
我同意毛里西奥·谢弗的解决方案。
如果这有帮助,我改变了我最初的查询:
DocSource:"P" OR ( DocSource:"E" AND (MyDate:[NOW TO *] OR -MyDate:[* TO *] ) )
Run Code Online (Sandbox Code Playgroud)
到
DocSource:"P" OR ( DocSource:"E" AND -( -MyDate:[* TO NOW] AND MyDate:[* TO *] ) )
Run Code Online (Sandbox Code Playgroud)
第一个查询在 Solr 4.1 中未按预期运行。
归档时间: |
|
查看次数: |
17474 次 |
最近记录: |