我的solr版本是4.0
我有一个多核环境,其核心是产品,核心是可用性这些产品的记录。
产品核心将包含详细的描述,并有大约10,000个douments。
可用性核心包含多达400万个文档。
我构建了一个小型测试集,我正在尝试使用连接语法获取结果,旨在查找包含“disney”的产品的可用性。
http://localhost:8080/solr/product/select?q={!join%20from=productid%20to=id%20fromindex=availp}disney&fl=*
我得到零结果。
每个核心上的单个查询都会产生结果
的问题:
1.我应该如何构建查询以获得结果
2.当我优化我的查询以过滤特定日期时,语法是什么
例如?fq = period:“november 2012”AND country:France
country是产品索引中的一个字段,period是从availp索引开始的字段。
个别查询的结果:产品核心
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1</int>
<lst name="params">
<str name="fl">id,productname</str>
<str name="indent">1</str>
<str name="q">disney</str>
<str name="rows">1</str>
</lst>
</lst>
<result name="response" numFound="31" start="0">
<doc>
<str name="productname">DPAZ00 DPAZ00-02 DPAZ0002 Disneyland Parijs Hotel Disney's Santa Fe</str>
<str name="id">44044</str></doc>
</result>
</response>
其他核心:availp
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="fl">*</str>
<str name="indent">1</str>
<str name="q">productid:44044</str>
<str name="rows">1</str>
</lst>
</lst>
<result name="response" numFound="42" start="0">
<doc>
<date name="datefrom">2012-10-01T10:00:00Z</date>
<arr name="period">
<str>oktober 2012</str>
</arr>
<str name="productid">44044</str>
<double name="minpriceperperson">209.0</double>
<int name="durationcode">1</int>
<str name="id">3890</str>
<int name="budgetcode">2</int>
</result>
</response>
答案 0 :(得分:1)
您是否尝试过将 fromindex 更改为 fromIndex (大写我)?
答案 1 :(得分:1)
根据Adventures with Solr Join,查询如下所示:
http://localhost:8983/solr/parents/select?q=alive:yes AND _query_:"{!join fromIndex=children from=fatherid to=parentid v='childname:Tom'}"
它应该是有效的
答案 2 :(得分:1)
1)您应该查询库存核心(产品作为内部索引)。 这就是查询的方式 http:// localhost:8080 / solr / product / select?q = *&amp; fl = {!join from = id to = id fromIndex = availp} productname:disney
2)您可以使用上面相同的查询语法。 http:// localhost:8080 / solr / product / select?q = period:11月&amp; fl = {!join from = id to = id fromIndex = availp} productname:disney AND country:France 如果不需要,您可以从上面删除productname。