2013-09-24 63 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,它沒有返回任何結果。 –