SolRとPHPを使用して一種のホテル/ホステル検索を実装しようとしています。利用可能な部屋については、宿泊施設に関する関連情報を含む新しいドキュメントと、availableFromおよびavailableTill日付を含む複数値属性をインデックス内に保存します。SolRに対してクエリを実行して、特定の期間内にすべての部屋を取得するのはそれほど難しいことではありませんが、並べ替えに関しては頭がおかしくなります...
私の目標は、利用可能な宿泊施設だけでなく、目的地(国/都市/地区)の一般的なフィルタークエリに一致するすべての宿泊施設を表示し、これらの結果を並べ替えて、利用可能なすべての部屋がリストの先頭に並べ替えられるようにすることです。
したがって、2012年12月1日から12月5日までのミュンヘンの部屋を検索するには、次のような結果を取得したいと思います。
- 部屋A(利用可能)
- ルームB(利用可能)
- 部屋C(指定された期間内に完全に利用可能ではありません=>ありがたいです)
- ルームD(まったく利用できません)
現在、SolR 3.6を実行していますが、必要に応じて新しい4.0に切り替えることができます。
Solr-Guruに何か提案はありますか?助けていただければ幸いです:-)
-編集-
サミュエルは私を正しい方向に押しやったと思います。したがって、問題は、可用性で並べ替えることができる関数クエリを作成する方法です。たぶん、私のドキュメントを保存するより良い方法がありますか、つまり私のschema.xmlを変更しますか?
これがそれからのちょっとした抜粋です:
<field name="recordId" type="string" indexed="true" stored="true" />
<field name="language" type="int" indexed="true" stored="true" />
<field name="name" type="string" indexed="true" stored="false" />
<field name="maxPersons" type="int" indexed="true" stored="false" />
<field name="avgPrice" type="tdouble" indexed="true" stored="false" />
<field name="city" type="freetext" indexed="true" stored="false" />
<field name="district" type="freetext" indexed="true" stored="false" />
<field name="country" type="freetext" indexed="true" stored="false" />
<field name="availableFrom" type="date" indexed="true" stored="true" multiValued="true" />
<field name="availableTill" type="date" indexed="true" stored="true" multiValued="true" />
乾杯-スヴェン