SOLR5.5 More Like This 相似文檔

今天我將給大家介紹下SOLR5.5的More Like This 功能

  • More Like This 的簡介
  • More Like This 配置
  • More Like This 的代碼
  • More Like This 參數說明
  • More Like This 的問題

More Like This 的簡介

solr 提供了MoreLikeThis 功能,也就是相似查詢的功能。Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeThisHandler 實現了該功能。如上所述,MLT 是與標準 SolrRequestHandler 集成在一起的;MoreLikeThisHandler 與 MLT 結合在一起,並添加了一些其他選項,但它要求發佈一個單一的請求。我將着重講述 MLT,因爲使用它的可能性更大一些。

More Like This 配置

solr 的MoreLikeThis功能的配置相當簡單,只需要在solrconfig.xml中添加如下代碼段就可使用該功能。

<!-- Solr Morelikethis 文件相似度搜索用到此配置 -->
<requestHandler name="/mlt" class="solr.MoreLikeThisHandler" />

More Like This 的代碼

SolrClient client new HttpSolrClient(url); SolrQuery query = new SolrQuery(); query.setRequestHandler("/" + MoreLikeThisParams.MLT); query.set(MoreLikeThisParams.DOC_COUNT, num <= 0 ? 5 : num);// 返回的相關文檔數 // 長度低於此參數的詞語不考慮,對中文來講,單字無意義 query.set(MoreLikeThisParams.MIN_WORD_LEN, 2); // 返回的與一段文本最相關的關鍵詞個數。太大會導致查詢性能下降 query.set(MoreLikeThisParams.MAX_QUERY_TERMS, 10); // 查詢結果不包含原始文檔 query.set(MoreLikeThisParams.MATCH_INCLUDE, false); // 如果一個詞在所有文本中出現次數小於1,則不考慮 query.set(MoreLikeThisParams.MIN_DOC_FREQ, 1); // 如果一個詞在原始文本中出現次數小於2,則不考慮 query.set(MoreLikeThisParams.MIN_TERM_FREQ, 2); // 執行相似匹配的field 這裏只根據標題推薦 query.set(MoreLikeThisParams.SIMILARITY_FIELDS,"title"); query.setQuery("id:11"); query.setRows(5); QueryResponse rsp = client.query(query); SolrDocumentList list = rsp.getResults(); for (SolrDocument document : list){ Sysem.out.println(document.getFieldValue("id")+":"+document.getFieldValue("title")); }
此處的url即,搜索服務器的訪問url ,
例如http://127.0.0.1/solr/example
此處的example 是你所建立的core的名稱。

More Like This 的參數說明

參數 說明
id 文檔主鍵,或使用其他唯一鍵;
mlt 在查詢時,打開/關閉 MoreLikeThisComponent 的布爾值。真假
fl 需要返回的字段
mtl.fl 根據哪些字段判斷相似度
mlt.mindf 最小文檔頻率,所在文檔的個數小於這個值的詞將不用於相似判斷
mlt.mintf 最小分詞頻率,在單個文檔中出現頻率小於這個值的詞將不用於相似判斷
mlt.count 返回相似文章個數

上述代碼中有些參數已經無效。下面是官方文檔中列舉的參數
這裏寫圖片描述

More Like This 的問題

  • MoreLikeThisParams.DOC_COUNT 在實際應用中發現這個參數已經無效了,在我使用的前期版本中,比如3.6,4.4 這個參數還是好用的,具體那個版本開始這個參數無效的,我沒有去翻閱官方文檔。替代方案:query.setRows(5) ,通過在query中設置返回行數來限制返回記錄條數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章