web-dev-qa-db-ja.com

Solrで日付範囲またはnull / noフィールドを検索しています

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 *])
32
Alistair Doulin

Mauricio Schefferのソリューションは、完全なクエリに含めるまではうまくいきました。クエリ自体には、範囲を含む最大3つのフィールドが含まれている可能性があり、Solrの途中で処理に失敗しました。私は次のクエリでそれを解決することができました:

(myfield:[start TO finish] OR (*:* NOT myfield:[* TO *]))

それは私の複雑なクエリでも目覚めたので、おそらくそれは他の誰かを助けるでしょう。

9
Svetlana

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で期待どおりに実行されませんでした。

2