2013-09-24 30 views
1

假定索引的字段包括: 商品名 产品类型 产品发布日期您可以使用solr配置文件对solr中的搜索结果进行排序和分组吗?

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

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

例如,当你搜索蜘蛛人,如果搜索结果带回来蜘蛛侠DVD和蜘蛛人漫画书的产品,它们混合了一个又一个这样的: spiderman1,DVD spiderman1,书 蜘蛛人2,书 蜘蛛人3,DVD spiderman4,书

是否有可能组的结果,使DVD光盘都是彼此相邻和书都是彼此相邻使用Solr的配置文件?如果是的话,任何人都可以举例说明如何去做?

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

回答

1

Solr支持Grouping(也称为域折叠),它允许您根据产品类型对结果进行分组。
可以将此配置作为默认添加到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 =流行度desc将导致组按照 ,最高流行度 doc在每个组中排序。默认为“分数desc”。

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

group.sort -

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

+0

如果我添加这个requestHandler,那么requestHandler会发生什么事?我向我的requestHandler添加了 true product_type,它没有返回任何结果。 –