標籤:
來源:http://blog.csdn.net/yangbutao/article/details/9450463
在電商平台中搜尋是非常重要的功能,主要包括有搜尋字詞類目導航、自動提示和搜尋排序功能
自動提示如顯示的,可以根據搜尋字詞自動進行提示,並在列表中顯示推薦的搜尋字詞的document數量
類目導航如所示,比如在搜尋方塊中搜尋“牛奶”,則把相關的類目和當前類目對應的屬性顯示出來
下面就以上幾種功能做樣本講解。
1、搜尋排序
搜尋功能中比較複雜的是文檔的打分排序,solr中的打分規則繼承了lucene中的相關的打分規則,這裡通過solr的dismax查詢解析器來支援複雜的打分
在打分的時候,會考慮以下因素,
搜尋索引鍵匹配某些欄位的打分比其他的欄位要高(qf^)
對於某些欄位,搜尋字串的密集度(phrase)的打分中占的比重(pf^)
其他複雜規則計算,比如銷售量、價格、賣家等級等等都可以作為考慮的因素,影響打分(bf)
http://10.1.1.58:8080/solr/select?defType=dismax&qf=name^100 subject ^1 &q=sony mp3&pf=name^100 subject ^1&q.op=OR&bf=sum(recip(ms(NOW,last_modified),3.16e-11,1,1),div(1000,price))^100
這個查詢的含義是,在name和subject中搜尋索引鍵sony mp3,name和subject在欄位查詢中的比重分別為100、1(qf=name^100subject ^1);並且這兩個欄位phrase的打分為
pf=name^100 subject ^1,也就是name占的比重大一些;其他還參考產品的價格和商品更新時間(bf=sum(recip(ms(NOW,last_modified),3.16e-11,1,1),div(1000,price))^100)
2、自動提示facet
http://10.1.1.58:8080/solr/select?q=*:*&rows=0&facet=true&facet.field=name_autocomplete&facet.prefix=電視
根據電視的分詞用facet進行自動的提示,提示的是分詞
3、facet分類導航
使用者在搜尋方塊中進行搜尋,下方會有分類導航,分類導航是一個樹型的結構,比如
所有分類>奶粉/輔食/營養品>奶粉>牛奶粉
類別可以由屬性,比如,牛奶粉的屬性有‘品牌’、‘適用階段’、‘適用年齡’、‘封裝方式’、‘源產地’等
使用者在搜尋方塊中輸入‘牛奶’,搜尋引擎導航到‘牛奶粉‘這個類別下,並自動顯示牛奶粉相關的屬性,相關實現和演算法有很多,下面的方法可以達到這個效果
分類導航可以參考搜尋結果的頭一條進行,比如得分最高的第一個document屬於’牛奶粉‘這個類別,那麼導航顯示自然就導航到這個類別上;並且相關的屬性就採用牛奶粉這個類別的屬性,比如‘品牌’、‘適用階段’、‘適用年齡’、‘封裝方式’、‘源產地’,類別和屬性的對應關係可以儲存到其他地方。
分類導航的樹形結構可以採用facet.pivot來實現
http://localhost:8983/solr/select?q=name:stock&rows=0&facet=true&facet.pivot=category,category1,category2,category3
類別屬性的對應的值,採用基本的facet來實現
http://10.1.1.58:8080/solr/select?q=name:牛奶&fq=category1:奶粉&fq=category2:牛奶粉&rows=0&facet=true&facet.field=logo&facet.field=property1&facet.field=property2&facet.field=property3&facet.minc
solr在電商平台中的使用樣本簡析