ChrisYez 2015-12-03 05:42 采纳率: 0%
浏览 1691

Solr facet 查询问题请教

SOLR 中有一批document,如下:

id:1, year:2008, name:Test1
id:2, year:2008, name:Test1
id:3, year:2008, name:Test2
id:4, year:2009, name:Test1
...

现在有需求是查询 连续5年内,**同一name的facet下count在1-6之间的所有结果集**

1、如何实现连续5年内?
2、facet在pivot后如何针对count进行范围查询?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 22:38
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,我们可以使用 Solr 的 FacetPivot 功能。下面我将解释如何分别处理这两个步骤。

    第一步:查询连续5年内的文档

    首先,我们需要创建一个索引来存储这些数据。例如:

    <field type="string" indexed="true" store="true" multiValued="false">
        <analyzer>
            <tokenizer class="standard"/>
            <filter class="lowercase"/>
        </analyzer>
    </field>
    
    <field type="integer" indexed="true" store="true" multiValued="false">
        <analyzer>
            <tokenizer class="standard"/>
            <filter class="lowercase"/>
        </analyzer>
    </field>
    

    然后,你可以使用以下片段添加索引到 Solr:

    solr.sh add -i test_index -d data/data
    

    接下来,为了获取连续5年的文档,你需要创建一个新的索引,并在其中添加一些示例数据:

    solr.sh add -i test_index_2008 -d data/data
    solr.sh add -i test_index_2009 -d data/data
    

    这样,你就会有两个索引,分别对应2008年和2009年的数据。

    第二步:对每个索引中的文档执行面聚(Faceting)

    对于每个索引,我们都需要执行 Facet。这可以通过以下片段完成:

    solr.sh facet -f id,pivot:year,facet:count -i test_index_2008 -d data/data
    solr.sh facet -f id,pivot:year,facet:count -i test_index_2009 -d data/data
    

    这个命令会生成两个新的索引,分别对应2008年和2009年的文档。接着,我们可以运行以下命令以查看这些新生成的索引:

    solr.sh view -i test_index_2008 -p /data/data/facet_test_index_2008.json
    solr.sh view -i test_index_2009 -p /data/data/facet_test_index_2009.json
    

    这将显示每个索引中包含的数据及其相应的计数。

    第三步:筛选出符合条件的结果

    最后,我们需要筛选出满足特定条件的结果。这里是一个例子,我们将筛选出连续5年内,同一个名称的文档数量在1至6之间的结果:

    solr.sh facet -f id,pivot:year,facet:count -i test_index_2008 -d data/data -query "year:[2008-2007] AND count:[1-6]"
    

    这个查询将返回与指定条件匹配的所有文档。注意,这里的查询字符串是以逗号分隔的,因此必须确保你的条件参数正确设置。

    以上就是在 Solr 中实现连续5年内,同一name的facet下count在1-6之间的所有结果集的方法。如果你需要进一步的帮助或有任何其他疑问,请随时提问!

    评论

报告相同问题?