4

我的 solr 版本是 4.0
我有一个多核环境,其中一个核心用于产品,一个核心用于这些产品的可用性记录。产品核心将包含详细的描述,大约有 10,000 个文档。可用性核心包含多达 400 万个文档。

我构建了一个小型测试集,并尝试使用连接语法获得结果,旨在查找包含“迪士尼”的产品的所有可用性。

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 是当时可用索引中的一个字段。

单个查询的结果:产品核心

<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>
4

3 回答 3

2

1)您应该查询库存核心(以产品为内部索引)。这就是查询应该是 http://localhost:8080/solr/product/select?q=*& fl={!join from=id to=id fromIndex=availp}productname:disney

2) 您可以使用上述相同的查询语法。http:// localhost:8080/solr/product/select?q=period:november&fl={!join from=id to=id fromIndex=availp}productname:disney AND country:France 如果不需要,您可以从上面删除产品名称。

于 2014-07-08T17:56:33.723 回答
1

您是否尝试过将fromindex更改为fromIndex(大写I)?

于 2013-01-22T04:13:44.940 回答
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'}"

应该是作品

于 2014-06-20T03:18:39.783 回答