0

このサイトは現在、主に範囲検索 (緯度と経度) を行っておりWHERE color = "red"、句の種類などのフィルタリングを行っています。ただし、地理空間インデックスで MySQL を使用するのはまだかなり遅いので、高速化する必要があります。

問題:検索を行うために Solr を使用することは良い考えですか?

その場合、MySQL から Solr に範囲列のみを複製し、WHEREMySQL で句を実行するか、Solr で両方のタイプのクエリを実行する必要がありますか?

Solr はデータベース (つまり MySQL) のようなデータを格納するためのものではないことを読みました。これは、検索が 10 個の異なる列 (またはfieldSolr の用語で) で実行でき、Solr のものをレプリケートした MySQL テーブルに 11 個のテーブルしかない場合、ほぼ 2 倍使用されるにもかかわらず、MySQL テーブルを保持することを意味しますか?ストレージスペースの半分は冗長ですか?

構造化データを使用しているようです (各行には多くの列が定義されているためですか?)、テーブル全体を Solr に格納する代わりに、MySQL と Solr に冗長データを格納することで、書き込み時のストレージ容量とデータベース アクセス操作の数を節約できます。ここでSolrは良い選択ですか?

速度の点では、PostGIS と Solr のどちらを使用した方がよいでしょうか?

4

1 に答える 1

2

Solr には、非常に高速な数値/日付範囲クエリがあります。Solr 3 geospatial はそれを利用しており、私はさらに優れたプラグインを作成しました。MySQLの方が速いとは思えません。

とはいえ、解決しようとしている唯一の問題が遅い地理空間クエリである場合、Solr を導入することで解決する可能性がありますが、リレーショナル データベースを置き換えるように設計されていないため、システム全体の複雑さが増します。 . 誤解しないでください。Solr は、特にファセット ナビゲーションとテキスト検索に優れています。しかし、あなたは Solr の主要な機能を利用したいとは言いませんでした。

PostGIS は、最も成熟したオープンソース GIS ストレージ システムです。実験として試してみて、それがより良いかどうかを確認することをお勧めします。MySQLで現在行っているように、緯​​度と経度の列のペアのアプローチを試してみます。また、PostGISネイティブの地理空間の方法を使用して、それが正確であっても試してみます。

MySQL または PostGIS で試すことができる 1 つの方法は、緯度と経度の値を小数点以下の桁数に丸めて、必要な適切なレベルの精度を得ることです。そして、それらを double ではなく float に格納すると、精度は 2.37 メートルに制限されます。使用するシステムは、スキャンする個別の値が少ない場合、範囲クエリを実行するのがおそらくはるかに簡単になります。

于 2012-09-09T15:01:52.010 に答える