1

假设索引字段包括:产品名称产品类型产品发布日期

假设 solr 请求处理程序类型为 dismax。

是否可以使用 solr 配置文件、schema.xml 和 solrconfig.xml 对 solr 搜索引擎中的搜索结果进行排序和分组?

例如,当你搜索蜘蛛侠时,如果搜索结果返回蜘蛛侠DVD和蜘蛛侠漫画书的产品,它们是这样混合的:spiderman1, dvd spiderman1, book spiderman2, book spiderman3, dvd蜘蛛侠4,书

是否可以使用 solr 配置文件对结果进行分组,以便 dvd 彼此相邻,书籍彼此相邻?如果是,任何人都可以举一个例子来说明如何做到这一点?

还可以通过使用 solr sonfig 文件将最新发布的 dvd 和书籍显示在结果顶部来对结果进行排序吗?如果是,任何人都可以举一个例子来说明如何做到这一点?

4

1 回答 1

1

Solr 支持分组(也称为字段折叠),它允许您根据产品类型对结果进行分组。
可以将此配置作为默认值添加到 solrconfig.xml 中的请求处理程序定义中,以便始终应用。

<requestHandler name="/browse" class="solr.SearchHandler">
 <lst name="defaults">
   <!-- Query settings -->
   <str name="defType">edismax</str>
   <str name="qf">
      text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
      title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0
   </str>
   <str name="df">text</str>
   <str name="mm">100%</str>
   <str name="q.alt">*:*</str>
   <str name="rows">10</str>
   <str name="fl">*,score</str>

   <!-- Faceting defaults -->
   <str name="group">true</str>
   <str name="group.field">product_type</str>
    ...................

 </lst>
</requestHandler>

组配置定义为默认值,可以通过作为参数传递来覆盖。

有两个可用的排序参数可让您对组和组内的结果进行排序。

种类 -

如何相对于彼此对组进行排序。例如,sort=popularity desc 将导致根据每个组中最高流行度的文档对组进行排序。默认为“分数描述”。

请注意最高流行度,因为排序取决于整个组中单个文档的最大或最新结果。

group.sort -

如何对单个组中的文档进行排序。默认为与排序参数相同的值。

于 2013-09-25T03:50:48.703 回答