我正在尝试使用 SolR 和 PHP 实现一种酒店/旅馆搜索。对于任何可用的房间,我都会在我的索引中存储一个新文档,其中包含有关住宿的相关信息和包含 availableFrom 和 availableTill 日期的多值属性。对 SolR 运行查询以在特定时间跨度内获取所有房间应该不难,但在排序时我的大脑搞砸了......
我的目标是不仅显示可用的住宿,而且所有这些都与目的地(国家/城市/地区)上的一般过滤查询匹配,并对这些结果进行排序,以便所有可用房间都排序到列表的开头。
因此,在 2012 年 12 月 1 日至 12 月 5 日期间在慕尼黑搜索房间时,我希望得到如下结果:
- A室(可用)
- B室(可用)
- 房间 C(在给定的时期内不完全可用 => 很高兴拥有)
- D室(完全没有)
目前我正在运行 SolR 3.6,但如有必要可以切换到新的 4.0。
有任何 Solr-Guru 对我有什么建议吗?任何帮助表示赞赏:-)
-编辑-
我认为 Samuele 把我推向了正确的方向。所以现在的问题是,如何创建一个能够按可用性排序的函数查询。也许有更好的方法来存储我的文档,即更改我的 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" />
干杯 - 斯文