1

現在、SQL'%like%'検索を使用して、特定のキーワードを含むすべての行を取得しています。検索のようなMySQLをLucene-Solrに置き換えようとしています。

インデックスを作成し、

  1. キーワードを使用してsolrにクエリを実行しました。
  2. 対応するすべてのレコードの主キーを取得しました。
  3. PKを使用してmysqlに照会
  4. 結果を取得しました。

そしてそれは遅くなりました。くそ!

1、2、3で使用されている帯域幅が原因だと思いますが(結果は100万以上のように非常に大きいため)、これ以上の方法はわかりません。

http経由でCSVを除いて、Solr検索結果を取得する他の方法はありますか?(mysqlのファイルダンプのように)

4

3 に答える 3

0

Solrは結果をCSVとしてエクスポートする方法を提供し、JSON100
万以上は依然として非常に大きなセットです。あなたはいつでもそれをバッチで行うことができます。

于 2013-01-04T10:15:57.477 に答える
0

同じ手順を実行して、単一のmySql全文検索よりも100〜1000倍高速なsolrとmysqlを組み合わせました。

したがって、ワークフロー/手順は一般的に問題ではありません。問題は、ボトルネックはどこにあるかということです。これを調査するには、カタリナを調べて、各solrリクエストのクエリ時間を確認する必要があります。MySQLでも同じです-クエリ時間/長時間実行されるクエリを見てください。

where in ()返されるPKの数が非常に多いため、パフォーマンスの問題が発生しました->非常に長い句のため、mySQLクエリが非常に大きくなりました。

そこに非常に大きなMySQLステートメントが続き、多くの行が200-1.000.000+を返しました

しかし、重要なのは、アプリケーション/ユーザーが一度にそのような大きな日付を必要としないということです。そこで、ページ付けとオフセット(solr側)を使用することにしました。Solrは、30〜50の結果のみを返すようになりました(ユーザーのアプリケーション環境のページネーション設定によって異なります)。

これは非常に高速に動作します。

//編集:http経由のCSV以外にsolr検索結果を取得する他の方法はありますか?

XML、PHP、CSV、Python、Ruby、JSONなどのさまざまな形式があります。これを変更するには、次のwtようなパラメータを使用できます....&wt=json

http://wiki.apache.org/solr/CoreQueryParameters#wt

http://wiki.apache.org/solr/QueryResponseWriter

//編集#2

追加の方法は、データをsolrにインデックス付けするだけではありません。solrからデータをフェッチし、MySQLデータなしで生きるために、データをsolrに(追加で)保存することができます。それがあなたのための方法であるならば、それはあなたのデータに依存します...

于 2013-01-04T10:18:04.203 に答える
0

すべてのMySQLデータベースをSolrに取得できませんか?

DIH(データインポートハンドラー)を使用して、MySQLからすべてのデータを取得し、Solrに非常に簡単に追加できます。

そうすれば、必要なすべての情報を1か所にまとめることができ、パフォーマンスが向上すると思います。

于 2013-01-04T10:48:14.950 に答える