solr 控制多詞聯集查詢命中的數量

來源:互聯網
上載者:User

標籤:多詞聯合   solr   命中數量   mm   

1.本文涉及全文檢索索引中那兩個概念?

2.眾多結果中,排序的標準是什嗎?

3.如何合理的控制solr查詢的命中的數量和品質?

在一些日常的文章中或一些資訊中,都有一些高頻詞,而這些高頻詞,在參與查詢時,往往會造成,大量的結果集命中。 
什麼意思呢? 舉個例子,假如我們現在做的是飯店的搜尋,在我們的索引庫裡有一列name這個field,這裡面大部分都是xxx飯店,假如你搜尋的時候搜一個xxx飯店,會被分詞成: 
xxx 
飯店 
然後xxx命中只有10條結果集, 而飯店確命中了20萬結果集,這麼以來總結果可能就有20多萬條,造成了大量的資料命中,一方面顯示了資訊的豐富性,另一方面可能給使用者造成太多的困惑。
我們分析下在全文檢索索引中兩個重要的概念查准率召全率在Lucene,Solr和Elasticsearch裡面一般的分詞的查詢結果都會對這兩個率做一個最好效果的調配,而這個預設的相關性評分規則就是:
  • 相關性評分最高的排在前面,也就是查準的體現
  • 相關性低的排在後面,也就是查全的體現 

當然上面的結論,並不是百分百正確的,因為由於Lucene底層的設計,可能會導致一些奇怪的效果,就是最精確的沒有排在最前面,這種問題大概只有10%的機率,我們可以索引兩個欄位,來避免這種問題,一個分詞,一個不分詞,查詢時候,可以一起查詢兩個欄位.回到剛才飯店的那個問題,假如現在有想要搜尋一個: 
北京車道溝北裡小莊十裡香飯店,分詞後的情況如下:車道 
溝 
北裡 
小莊 
十裡 
香 
飯店注意,在整個索引庫裡面大部分要搜尋的資料都含有北京和飯店兩個詞,所以這一下幾乎會索引裡面的所有資料都查詢出來了,雖然查詢排名還可以,但命中量太大了,超過4頁之後幾乎都是北京xxxx飯店了,跟主題的搜尋沒啥關係,所以我們可以採取一些策略來避免這種情況: 
solr預設的搜尋策略,是分詞後的term的or的關係,最後結果集全部返回,如果我們改成and,那就是精確匹配了,但是有一點就是,如果是精確的匹配,某些時候使用者輸入的不完整的詞就失去了全文檢索索引的含義了,所以我們要採取一種綜合的策略,既保證查准,又能保證召回,這樣才能實現?這個東西直接用我們的全文檢索索引架構是沒法實現的,有個思路不錯,就是我們對要搜尋的詞,提取出句子的主幹,然後主幹部分在檢索時,是必須要命中的,如果不命中,就算該條資料與查詢的詞,相關性不大,這個方法不錯,但前提是你如何在大規模的資料裡面精準的提出這些精確的主幹詞呢? 使用機器學習或者是文本挖掘? 答案是肯定能做,只是需要另外設計了,這是最好的解決搜尋的命中數量太多的辦法。還有一個辦法,是一種治標不治本的辦法,比較容易實現,就是限制每次分詞後最大匹配term的個數,也就是像車道 
溝 
北裡 
小莊 
十裡 
香 
飯店 
必須命中3個或更多的term,我才認為相關性更大,或者有一個百分比來限制80%以上的命中,就算此條記錄不錯。這個使用solr的edismax可以解決。 兩種解決方案,如下:
一: 使用edismax,在q裡寫完 
name:北京xxxxx飯店後 
在Raw Query Paramters參數裡面寫 
defType=edismax&mm=80%25然後查詢即可,mm是最小匹配的數量,可以是個固定的值,也可也是個百分比。二:在solr 的schema.xml中把 solrQueryParser 的defaultOperator  變成AND 


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

solr 控制多詞聯集查詢命中的數量

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.