sql >> データベース >  >> RDS >> Mysql

Solrでこの種の機能が機能しないのはなぜですか?

    スタックオーバーフローのコメントで指摘されているように、ブラウザのクエリはphpクライアントベースのクエリとは異なります。これを修正してテストする必要がある方程式からそれを削除します。ブラウザベースのクエリと同じ結果を得るには、phpコードは次のようになっている必要があります。

    $solr = new Apache_Solr_Client(...);
    
    $searchOptions = array(
      'sort' => 'mod_date desc'
    );
    
    $results = $solr->search("bmw", 0, 10, $searchOptions);
    

    代わりに、私はそれがより似ていると想像します:

    $searchOptions = array(
        'fq' => 'category:"Bilar" + car_action:Sälje',
        'sort' => 'mod_date desc'
    )
    
    $solr->search("\*:*", 0, 10, $searchOptions);
    

    phpクライアントの結果はブラウザベースの結果と同じになると思いますが、逆の方法で行った場合も同じことが起こると思います。phpクライアントから現在のパラメータを取得し、それらを正しく適用します。ブラウザベースのクエリ。

    ここで問題が発生しましたが、ドキュメントが適切に並べ替えられていません。

    このクエリを試してみます。これは、phpクライアントベースのコードに相当します。

    http://localhost:8983/solr/select/?&q=%2A%3A%2A&fq=+category%3A%22Bilar%22+%2B+car_action%3AS%C3%A4ljes&sort=mod_date+desc
    

    これに対して、フィルタークエリをメインクエリに移動するこのクエリ:

    http://localhost:8983/solr/select/?&q=+category%3A%22Bilar%22+%2B+car_action%3AS%C3%A4ljes&sort=mod_date+desc
    

    違いがあるかどうかを確認します。存在する場合は、キャッシュされたフィルター処理されたクエリの結果がsolrによって使用およびソートされる方法にバグがある可能性があります。これは、クライアントでは問題になりませんが、solrサービス自体に問題があります。

    これにより、回答に近づくことができます。



    1. PHPプリペアドステートメント...REGEXPの数値範囲として変数をバインドしますか?

    2. 複数のMYSQLクエリと複数のphpforeachループ

    3. MySQLは答えで例を照会します

    4. MySQLパフォーマンス–構成ファイルからの5つのパラメーター