信息组织与信息检索

solr分面搜索尝试

2018-06-19  本文已影响165人  cathy1997

1.facet的一般参数

facet - "true" 启用faceting计数;"false"或blank或missing value,不启用faceting,默认值是blank。
facet.query - 可以指定Lucene语法形式的任意query来生成faceting计数。使用facet.query来覆盖默认检查字段,并精确指定你希望计数的词或正则式,可以指定多个facet.query参数。
例如直接修改URL:http://主机名:8983/solr/mycollection/select?facet.query=creation_date:清代&facet=on&q=title:犬),则会显示该字段下的分面数据数量。

2.分面的类型

2.1字段分面(Field-value Faceting)

分面结果

2.2范围分面(Range Faceting)

可以在支持范围查询的日期或数字字段上使用范围构面。此功能有助于通过对范围中的参考字段进行分块来提供更好的用户体验。

2.3区间分面(Interval Faceting)

区间分面允许设置区间范围和统计在这个范围内计数。 虽然与范围分面有类似的功能,但是两个方法实现却不同,而且根据上下文的不同性能也不一样。

区间必须以’(‘或’[‘开头,跟随一个结束值,然后是逗号(‘,’),然后是开始值,然后以’)’或’]’结尾,开始值和结束值值不能为空。 比如:
(1,10) -> 大于1,小于10
[1,10) -> 大于等于1,小于10
[1,10] -> 大于等于1,小于等于10

2.3分面查询之后获得具体数据

自己想了一种不算很标准的做法:重新构建URL,在filter query增加一个查询条件,即facet.field的字段。
举例说明:
查询所有标题带有“犬”字的国画,以材质技法(subject_matter)为分面字段进行查询,构建URL:http://主机名:8983/solr/mycollection/select?facet.field=subject_matter&facet=on&q=title:犬
查询结果共12条数据,在subject_matter下分为6类,每一类的数目如下图:

现想要得到subject_matter=花鸟这一类下的两个数据,则可以重新构建URL:http://主机名:8983/solr/mycollection/select?fq=subject_matter:花鸟&q=title:犬得到这两个数据

若要按照某个字段(如id)排序,则在sort下输入id asc或者id desc进行查询结果的顺序返回。

参考:
solr-搜索-层面分析 - CSDN博客

上一篇 下一篇

猜你喜欢

热点阅读