在 solr 中分面

Faceting in solr

朋友们,你们好 我遇到了一个问题,因为我需要在 solr

中匹配以下查询
SELECT entidad, municipio, count(*) as total, 
 sum(case when ip like '10.%' then 1 else 0 end) as internos, 
 sum(case when ip not like '10.%' then 1 else 0 end) as externos 
 FROM bitacora.actividad a 
 where sistema = 'RGNPMarcas' 
 AND fecha >= '2021/07/16' and fecha <= '2021/07/31' 
 AND parametros like 'PDF'
 and parametros like 'EGV'
 and entidad = '01'
 GROUP BY entidad, municipio 
 ORDER BY entidad, municipio

我一直在研究 solr 中的 Faceting,我已经做了一些类似下面的计数,但事实是我不知道如何缓解这种情况。

我的架构如下:

<field name="tabla" type="string" indexed="true" stored="false" multiValued="false"/>
  <field name="entidad" type="string" indexed="true" stored="true" default="" multiValued="false"/>
  <field name="municipio" type="string" indexed="true" stored="true" default="" multiValued="false"/>
  <field name="ip" type="text_general" indexed="true" stored="true" default="" multiValued="false"/>
  <field name="fecha" type="pdate" indexed="true" stored="true" multiValued="false" default=""/>
  <field name="parametros" type="text_general" indexed="true" stored="true" default="" multiValued="false"/>
  <field name="total" type="pint" uninvertible="true" indexed="true" stored="true"/>
  <field name="internos" type="pint" uninvertible="true" indexed="true" stored="true"/>
  <field name="externos" type="pint" uninvertible="true" indexed="true" stored="true"/>

如您所见,我已经有了基础字段和索引字段,我需要的是您对solr这些问题的经验,或者有人可以指导我,请!

如果您有一个字段,名称为“ip_type”,内容为“Internos”或“Externos”,具体取决于天气与否,IP 以“10.”开头,那么您的查询将包含作为过滤器查询您在“where”之后写的所有条件(例如“sistema = 'RGNPMarcas'”),facet pivot 将有 3 个字段:“entidad,municipio,ip_type”.

现在,为了获得“ip_type”列,您可以更改索引数据的方式(更改输入),或者您可以使用模式替换字符过滤器工厂(https://solr.apache.org/guide/7_1/charfilterfactories.html#solr-patternreplacecharfilterfactory)