0

プロジェクトでSolrjをSolrクライアントとして使用しています。

検索中にいくつかの単語を検索すると、Solrj が応答を送信するのに時間がかかるようです (たとえば、8 ~ 12 秒)。他の単語のほとんどを検索している間は、Solrj の方が時間はかからないようです。

たとえば、ブラウザに検索 URL を投稿すると、QTime がミリ秒単位でのみ表示されます。

http://serverName/solr/mydata/select?q=computing&qt=myhandler&fq=category:1

ただし、以下のように自分のプロジェクトから Solrj を使用して同じクエリを実行すると、同じ結果が得られるまでに長い時間 (8 ~ 12 秒) かかります。したがって、Solrj が結果を出すのにそんなに時間がかかるのではないかと思います。

SolrServer サーバー = 新しい CommonsHttpSolrServer(url); SolrQuery query = new SolrQuery("コンピューティング"); query.setParam("qt", "myhandler"); query.setFilterQueries("カテゴリ:1"); query.setHighlight(false); QueryResponse rsp = server.query(クエリ);

POTH と GET メソッドの両方を試しました。しかし、どちらも時間がかかります。

なぜSolrjが特定の単語に対してこんなに長い時間がかかるのか考えてみてください。検索結果として、約 40 のドキュメント リストが返されます。そのための強調表示もコメントアウトしています。

そして、それをスピードアップするためのあらゆる方法。

注: Tomcat を使用しており、ヒープ サイズを約 1024 MB に設定しています。そして、Solr 1.4.1 バージョンを使用しています。

ありがとう、

4

2 に答える 2

0

PHPを微調整して、JavaのSolrJと同等のパフォーマンスを得ることができました。しかし、それは多くの作業であり、完全な証拠ではありませんでした。PHPの最大の問題は、速度ではなくメモリリークです。何千ものレコードにインデックスを付ける場合、それらをループする必要があり、PHPでメモリリークが発生します。PHPで小さなバッチを呼び出すためにbashスクリプトを使用して、PHPバッチプロセスを分割しました。しかし、それでもインデックス作成に失敗します。JavaのSolrJは、メモリリークの問題を解決し、信頼性を向上させます。Javaは、bashスクリプトやPHPの場合のように、創造的なフープを飛び越えて速度を上げる必要がなく、高速です。

また、SolrJでレコードをコミットしないでください。solrの構成で自動コミットをオンにし、Solrがコミットを処理できるようにします。とても速いです。

于 2012-09-25T01:25:27.480 に答える
0

SolrJ は、Solr を直接実行するよりもパフォーマンスに大きな影響を与えません。私はそれを使用しており、Solr 内で 2 ~ 3 ミリ秒かかるクエリは、ネットワーク経由で約 12 ~ 15 ミリ秒で返されます。これには、完全な Web スタックの通過と Json へのマーシャリングが含まれます。コードのどこかにエラーがあると思われます。プロファイルを取得するか、いくつかの印刷ステートメントを散らしてみて、時間が失われている場所を確認してください。ネットワークを経由している場合 (おそらくそうだと思います)、ping を実行して応答時間を確認してください。ソースサーバーからSolrサーバーへのcurlリクエストを試して、生の応答時間を確認することもできます

于 2011-03-30T19:29:14.127 に答える