2017-08-11 27 views
0

たとえば、ディーラーが販売する車の在庫を表示するCar DealerのWebサイトがあります。各車はLE、SE、XLE、XSEのように車のトリムに異なる賞の範囲ベースを持っています。例えば。 Toyota Camry:| 15000 - 20000 |Solrで範囲照会を正しく作成する方法

| 25000 - 30000 | | 35000 - 40000 | | 41000 - 50000 |

トヨタREV4:| 18000 - 21000 | | 24500 - 27000 | | 28000 - 33000 | | 34000 - 36000 |

ここで、各行はsolrの1つのドキュメントです。だから私は、ユーザーMinとMaxのテキストボックスで賞ファセットを持つ

prizeMin:[18000, 24500, 28000, 34000], prizeMax:[21000, 27000, 33000,36000] 

:トヨタREVドキュメントの

prizeMin:[15000, 25000, 35000, 41000], prizeMax:[20000, 30000, 40000, 50000] 

:私は、トヨタカムリの文書について

Solrの文書にこのように、この賞の範囲を保存します彼の賞品の範囲に入る。私がしたいことは、ユーザが15000 to 17000と入力した場合、トヨタカムリ(この範囲の間のLEトリムフォール)のみを表示したいが、トヨタREV4は表示しない。ユーザーが26000 to 4000と入力すると、両方の車が表示されます(CamryはSE、XLE、REV4はSE、XLE、XSEと一致するため)。

私は賞の範囲クエリを持つことによって行うことができますこれはprize:[UserEnterMin TO *]ようにSolrし、ユーザーが22000 to 23000を入力した場合prize:[* TO UserEnterMax].

しかし、その後、私はこの賞の範囲は、テーブル内の任意の賞品の範囲に該当しないため、何も表示したくありません。私の解決策ではprize:[UserEnterMin TO *]prize:[* TO UserEnterMax]私はこのシナリオが表示されるのを防ぐことはできません。

私の質問は、ユーザーがギャップの間に入る賞品を入力する方法と、solr範囲クエリを使用してその文書の選択を排除する方法です。

答えて

0

これは、他のものをモデル化するために地理機能を使用する方法を知って行うことができます。see here

リンクはかなり古いされていること。以来、地理的なものは拡張され、リファクタリングされ、新しいフィールドタイプが利用可能になりました。おそらく、これらのタイプでいくつかの異なる方法でこれをモデル化することができます。

関連する問題