Search ApacheSolr的方面动态字段
我在ApacheSolr中定义了动态场: 我用它来存储产品特性,比如:颜色特性、直径特性、材料特性等等。这些字段的数量不是恒定的,因为产品在变化Search ApacheSolr的方面动态字段,search,solr,field,facet,Search,Solr,Field,Facet,我在ApacheSolr中定义了动态场: 我用它来存储产品特性,比如:颜色特性、直径特性、材料特性等等。这些字段的数量不是恒定的,因为产品在变化 是否有可能通过同一个查询获得所有这些动态字段的方面结果,或者我是否需要在一个查询中始终写入所有字段,如facet.field=color\u feature&facet.field=diameter\u feature&facet.field=material\u feature&facet.field=…Solr当前不支持facet.field参数
是否有可能通过同一个查询获得所有这些动态字段的方面结果,或者我是否需要在一个查询中始终写入所有字段,如
facet.field=color\u feature&facet.field=diameter\u feature&facet.field=material\u feature&facet.field=
…Solr当前不支持facet.field参数中的通配符。因此,
*\u功能
对您不起作用
我想看看这个-
如果不想传递参数,可以轻松地将这些参数添加到请求处理程序的默认值中
请求中的
qt=requesthandler
总是包含这些方面。在电子商务平台上工作时,我也遇到过类似的情况。每个项目都有静态字段(Price
,Name
,Category
),可以轻松映射到SOLR的schema.xml
,但每个项目也可能有动态变化量
例如,商店里的t恤衫可以有颜色(黑色,白色,红色,等等)和尺寸(小的,中等的,等等)属性,而同一家商店里的蜡烛可以有香味(南瓜,香草的等等)变化。本质上,这是一个实体属性值(EntityAttribute-value,EAV)关系数据库设计,用于描述产品的一些特性
由于SOLR中的schema.xml
文件从刻面的角度来看是扁平的,因此我通过将变体转换为单个多值字段来解决这个问题
<field
name="variation"
type="string"
indexed="true"
stored="true"
required="false"
multiValued="true" />
。。。所以当我告诉SOLR刻面时,我得到的结果看起来像
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="variation">
<int name="Color|White">2</int>
<int name="Size|Extra Large">2</int>
<int name="Size|Large">2</int>
<int name="Size|Medium">2</int>
<int name="Size|Small">2</int>
<int name="Color|Black">1</int>
</lst>
</lst>
<lst name="facet_dates"/>
<lst name="facet_ranges"/>
</lst>
。。。这对于政府工作来说已经足够好了
这样做的一个缺点是,您将失去在此EAV数据上进行范围刻面的能力,但在我的例子中,这并不适用(应用于所有项目的Price
字段,因此在schema.xml
中定义,以便可以以通常的方式刻面)
希望这对别人有帮助 它剥离了我的标记,动态字段如下所示:dynamicField name=“*\u feature”type=“string”index=“true”stored=“true”在编辑问题时使用格式按钮。回答很好,但是添加了一个requestHandler有点忽略了要点。如果字段是动态的,requestHandler也必须是动态的。这是不可能的。。如果添加的字段是完全动态的,则不能使用具有固定方面的请求处理程序。但是您可以使用append模式定义一组固定的列表,并在查询中传递其余的列表。可以减少URL中的参数。这比动态字段有什么好处吗?正如您所提到的,此解决方案不允许范围方面。我理解你关于价格的论点。但是数量呢?每种变体可能不同。那么,您是如何存储每种变体的数量的?我只想筛选可用变体的搜索。有没有办法做到这一点?有没有人知道当前版本的Solr/Lucene是否支持动态字段上的facet?
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="variation">
<int name="Color|White">2</int>
<int name="Size|Extra Large">2</int>
<int name="Size|Large">2</int>
<int name="Size|Medium">2</int>
<int name="Size|Small">2</int>
<int name="Color|Black">1</int>
</lst>
</lst>
<lst name="facet_dates"/>
<lst name="facet_ranges"/>
</lst>
Color
White (2)
Black (1)
Size
Extra Large (2)
Large (2)
Medium (2)
Small (2)