3

body という名前の text_general フィールドを、9:15、9:15pm、9:15p などの時間でクエリしようとしています。REST API を介して次のクエリの両方を試しましたが、成功しませんでした。

  • q=body:9\:15*9:15に言及しているドキュメントが見つからず、ヒットがありません
  • q=body:"9:15"*9:15 に似ていないドキュメントを含む、すべてのドキュメントを教えてくれます

Chrome でのデバッグでは、これらをブラウザに直接入力します。HTTP 変換でコンテンツが失われないように、値に対して encodeURIComponent も試しました。どちらでも同じ結果。

ここには簡単な答えがあると思いますが、Solr クエリがどのように機能するかについての私のメンタル モデルは壊れているだけです。

4

2 に答える 2

1

そのような場合、私はよく次の 2 つのことを行います。

  1. Solr クエリ デバッグをオンにすると、実際にクエリが実行されることがわかります。応答の最後に余分なノードが表示されます。

    &debug=query
    
  2. 分析ツールでフィールド アナライザーを調べます。(Solr のサンプル コアに基づく URL)

    http://localhost:8983/solr/#/collection1/analysis?analysis.fieldvalue=9%3A30pm&analysis.query=9%3A30&analysis.fieldtype=text_general&verbose_output=0
    

どちらの方法でも、クエリの何が問題なのかを正確に知ることができます。2 つ目では、インデックスを再作成せずにマッチングがどのように機能するかを確認できます。

于 2013-08-14T21:29:47.900 に答える
1

時間文字列は、Unicode 標準付属書 UAX#29に従ってトークン化されます。したがって、コロンを取り除く必要があります。チェックすると、結果に 9 または 15 のいずれかが含まれているはずであることがわかると思います。

于 2013-08-15T13:47:37.073 に答える