Solrのテキストフィールドで検索を実行したい。範囲内または値がないすべての一致を返したい。 2つはWordを個別に検索します。
myfield:[start TO finish]
-myfield:[* TO *]
1つ目は、範囲内のすべての一致を返します。 2番目は、「myfield」フィールドに値がないすべての一致を返します。 問題は、これら2つを組み合わせることです。
これは一致を返しません:
myfield:[start TO finish] OR -myfield:[* TO *]
これにより、開始と終了の間の一致が返されますが、nullエントリは返されません。
myfield:[start TO finish] OR (-myfield:[* TO *])
Mauricio Schefferのソリューションは、完全なクエリに含めるまではうまくいきました。クエリ自体には、範囲を含む最大3つのフィールドが含まれている可能性があり、Solrの途中で処理に失敗しました。私は次のクエリでそれを解決することができました:
(myfield:[start TO finish] OR (*:* NOT myfield:[* TO *]))
それは私の複雑なクエリでも目覚めたので、おそらくそれは他の誰かを助けるでしょう。
MauricioSchefferのソリューションに同意します。
それが役立つ場合は、最初のクエリを変換しました。
DocSource:"P" OR ( DocSource:"E" AND (MyDate:[NOW TO *] OR -MyDate:[* TO *] ) )
に
DocSource:"P" OR ( DocSource:"E" AND -( -MyDate:[* TO NOW] AND MyDate:[* TO *] ) )
最初のクエリは、Solr4.1で期待どおりに実行されませんでした。