使用 Solr 4.0+。我在商店和产品之间的 SQL 中有父子关系。我们想写一个查询,说“找到商店名称,地址或城市匹配'xxx'的所有商店。或者商店包含与'xxx'匹配的产品。对于在某个位置找到的每个产品,提升^y。然后按分数 desc 排序"
我们为索引创建的文档如下所示:
<doc>
<field name="id">22</field>
<field name="locationname">Store 1</field>
<field name="locationaddress">1 Main St</field>
<field name="locationcity">Oakland</field>
<field name="loc">37.842023000000,-122.251423000000</field>
<field name="product">Product Name 1</field>
</doc>
<doc>
<field name="id">22</field>
<field name="locationname">Store 1</field>
<field name="locationaddress">1 Main St</field>
<field name="locationcity">Oakland</field>
<field name="loc">37.842023000000,-122.251423000000</field>
<field name="product">Product Name 2</field>
</doc>
使用基本查询作为起点:
http://localhost:8983/solr/collection1/select?q=xxx&fl=id, locationname, score&group=true&group.field=locationname&sort=score desc&qf=numFound^5
有什么方法可以将 numFound 用作提升或过滤查询的一部分?您的查询似乎无权访问此返回的属性。唯一的选择是重组您的数据以进行索引,还是将按结果分组的结果拉入某个中间层应用程序并在那里应用评分逻辑?