2.1 什麼是文件?
solr是乙個文件儲存與檢索引擎,提交給solr處理的每乙份資料都是乙個文件(一片新聞報道,乙份簡歷,社交使用者資訊);每個文件包含乙個或多個字段,每個欄位被賦予具體的字段型別。solr查詢返回的主要搜尋結果是由乙個或多個字段組成的文件集。
2.2 基本搜尋問題
背景:傳統sql資料庫實現查詢時,如果要求所有詞都匹配到,會導致一些相關的圖書未被找到;如果要求乙個詞匹配到就可以會導致其他過多的無光圖書被找到;且數量越來越大時,查詢執行花銷會越來越大
解決:以solr為代表的搜尋引擎會對內容和查詢進行文字分析,確定文字相似的詞,理解並匹配同義詞,每個搜尋結果的得分是基於它與查詢詞的匹配程度來計算的,以確保最佳結果排在前面;solr之所以能完成以上工作,是因為使用了索引將內容對映之文件的方式(傳統資料庫模型是將文件對映到內容)。倒排索引是搜尋引擎運作的核心。
2.3 倒排索引
此處需注意:
(1)倒排索引中的所有詞項對應乙個或多個文件
(2)倒排索引中的詞項根據字典順序公升序排列
2.5 solr如何根據倒排索引找到文件集
例如有以下詞項
如果查詢是hello world(預設or運算),則查詢結果是2個查詢詞項文件編號的並集,返回文件24578;
如果查詢是hello and world,則查詢結果是2個查詢詞項文件編號的交集,返回文件5和8;
2.6 模糊匹配
solr的模糊匹配包括萬用字元匹配,區間匹配,編輯距離搜尋和鄰近搜尋。
(1) 萬用字元匹配:solr最常見的模糊匹配形式之一,例如offi*能匹配office,officer等;off*r能匹配offer和offcer;off?r能匹配offer,但不匹配offcer;原因是因為星號匹配查詢詞中0或多個字元,而問號只匹配單個字元。(不適用於短語搜尋,只適用於單個查詢詞);
(2) 區間搜尋:適用於在乙個區間搜尋特定文件子集;
(3) 編輯距離搜尋:靈活處理拼寫錯誤,提供了字元變體的處理手段,可以有效處理80%以上的人為拼寫錯誤。solr使用波浪符號表示模糊編輯距離搜尋;如administrator~表示查詢匹配到與原始詞項相距2個編輯距離(定義為字元的一次插入,刪除,替換或位置互換)的其他詞項。
(4) 鄰近搜尋:「hello world」~1表示hello和world之間最多可以相隔乙個詞;
2.7 相關度
solr出色地實現了搜尋結果排序中最佳匹配的文件位於搜尋結果列表頂端,這是它的開箱即用功能之一。它會計算每個文件的相關度得分,並從最高分到最低分對搜尋結果進行排序。
2.8 查準率與查全率
(1)查準率:正確匹配的文件數量/返回的文件數量
(2)查全率:正確匹配的文件數量/(正確匹配的文件數+錯誤匹配的文件數)
區別:如果返回的結果是正確的,則查準率高;如果正確的結果都被返回來了,則查全率高;查全率不關心返回的結果是否都是正確的,而查準率不關心正確的結果是否都被返回來了。最大限度提公升查準率與查全率是絕大多數搜尋相關度優化的最終目標。在法律方面的搜尋中,查全率的重要性更高,因為如果遺漏了文件,就可能導致一定的法律後果。
2.9 分布式搜尋
問題:同時發出過多的查詢請求,或者需要在單台伺服器上處理太多的搜尋資料,這些都會導致搜尋伺服器超載;
解決方法:將內容拆分到兩個單獨的solr索引中,每乙個索引包含單獨的一部分資料,每次搜尋執行時,查詢會被同時傳送到兩台伺服器上,分別進行處理後彙總在一起再返回給搜尋引擎;solr的分布式搜尋功能開箱即用。
solr 基礎查詢語法
表示 key value key value 示例 id a6c1980ced984ff5b172eb685e108ab8 and price 22.75 在 key 前加上 表示取反 表示 key value key value 表示 key start key 表示 key end key to...
solr系列二 solr匯入資料庫資料
2.找到d solr home catalog conf schema.xml來配置solr和資料庫的對應字段。uniquekey是文件的唯一標識,必須標識對應的字段,否則solr建立索引報錯。此處的field的name屬性最好和資料庫的字段保持一致,這樣我們可以減少一些對映配置。具體配置如下 ca...
solr8 2 0安裝,solr最新版安裝 二
建立solr例項索引庫 1.找到解壓解壓好的solr 8.2.0 server solr configsets sample techproducts configs conf目錄 把這些檔案全部copy到solrhome資料夾中建立的solr例項conf資料夾下面 這裡的solrcore就是我的s...