天天看點

搜尋正在遍及世界

大部分從業人員剛剛從Lucene Revolution社群回來。與Lucene/Solr社群的精英們一起參加活動實在是一次讓人無法忘懷的經曆。我們可以越來越明顯的看到,搜尋類控件已經逐漸成為現代應用的主流UI元素。這些應用的使用者期待更加豐富的互動性,并且由于搜尋控件已經越來越智能化,搜尋控件正在成為與大資料和複雜應用進行互動的核心。

搜尋作為主要使用者界面

谷歌和Siri使得我們所有人都期待将智能搜尋作為主要的使用者界面。Lucene社群的一個有趣的例子就是ADP人力資源系統,該系統完全放棄了使用者界面,傾向于使用搜尋引擎來了解各種動詞或者名詞所表達出的行為傾向,随後會向使用者呈現可以在人力資源系統中采取動作的搜尋結果。但是“聘請約翰史密斯”(Hire John)和“入職約翰史密斯”(Onboard John)作為強關聯的兩種行為,對于不幸名為“約翰 海爾”(John Hire)的搜尋動作可能就會與搜尋結果不太相關。

與谷歌和Siri一樣,這類産品告訴我們即使在日常生活中也能與應用互動。我們不再将計算資源視為特定指令的嚴格執行者。相反,我們期望應用程式可以模糊了解和推斷我們的意思。換句話說,我們喜歡搜尋展示出來的頁面資料,但期望可以搜尋的内容不僅僅是文字。我們希望搜尋引擎可以更加智能化 - 機器學習和自然語言處理。我們希望它以使用者為中心,并專注于我們的需求。

一旦您緻力于将搜尋作為您的使用者界面元件,您就緻力于通過其他系統豐富您的搜尋引擎。大資料是這種範例的一個明顯例子。正如我們相信開源連結(OpenSource Connections)一樣,搜尋是處理大資料最直接的方式。但是,一旦您決定将搜尋作為您的主要UI元件,您必須找到科學的方法去處理您可能應用于結果集中的所有資料。“智能化”的目的是為了友好的使用者體驗,而面向使用者的搜尋框恰恰為探索這些資料提供了更為友好的體驗。

一個例子就是LucidWork的大資料系統(LucidWork’s Big Data System)。該系統使用搜尋元件作為整個系統結構體系中的核心UI元件,并且,該搜尋引擎應用機器學習和OpenNLP來豐富大資料搜尋中的結果集。

Grant Ingersoll和Ted Dunning提出了一個參考架構,該架構表達了這個想法的許多部分。可以使用Solr(一個企業級全文檢索伺服器,與Lucene類似)作為探索資料的主要方法。來自機器學習和批處理資料的回報可以通過簡單地添加或修改字段來豐富搜尋結果。一旦資料結果準備就緒,全文搜尋的功能就可以接管了。

Solr作為理想的資料結構

為什麼像Solr這樣的搜尋引擎是探索所有這些資料的理想手段?Solr對可索引的内容幾乎是沒有任何限制的。預設對所有的内容都添加了索引。然而,資料庫(NoSQL或其他類型資料庫)要求我們考慮清楚如何在一列中選擇一個極小範圍的子集以便我們稍後索引或查找。但是,稍後如果你想查找一個沒有索引的列,你會不知不覺地把事情搞砸,整個系統都将被拖慢,因為整個列線上性掃描你想要查找但卻找不到的未标記資料。

但Solr是不同的。反向索引資料結構是從索引優先的角度寫入的。字段常常被索引但是卻不被存儲——實際的存儲并不重要或者已經在其它地方完成。可以查找任何東西的能力讓我們能夠在任何領域進行全文搜尋,但在大資料的背景下,分面導航(Faceted Navigation)就是搜尋真正發揮作用的地方。正如Trey Grainger的演講所展示,“分面(facets)”允許以一種非常廣泛的方式來分解一個字段中的值。這個簡單的工具通常提供令人驚訝的分析能力。除了索引字段以外,沒有什麼特别的要求 - Solr毫不費力。

這種功能的一個簡單例子是通過叢集算法豐富Solr文檔。一旦每個文檔都用一個字段作為索引來訓示其叢集,就可以在Solr中非常輕松地探索這些叢集的性質。首先,使用者檢視叢集分解的每一個方面,并各自計數。然後,使用者可以按照群集值進行過濾,檢視過濾之後的其他方面再如何細分。例如,我們可以在我們的文檔集中發現圍繞特定的自然語言形成的最強大的群集。當我們在一個方面進行過濾時,突然在自然語言中隻有“中國”兩個字,那麼有關其他自然語言的檔案将不再傳回。對傳統資料庫(SQL或NoSQL)做類似的事情需要對許多列進行索引,這對于大多數建構資料庫的人來說都是十分繁瑣的。

Solr的未來

Yonik 在他的主題演講中指出了Solr的未來目标。借助Solr雲,Solr看起來更像是一個把搜尋功能已融入其核心的NoSQL解決方案。正如馬克米勒(Mark Miller)在他的演講中所說的:“Solr從搜尋引擎開始逐漸回到解決相關的存儲問題;而 其他解決方案從存儲問題開始,并試圖回到搜尋上來“。越來越多的人認為Solr的主要作用是資料的存儲。對于大多數使用者而言,它比資料庫更友好,而且Solr正在逐漸成為真正的分布式存儲引擎。

充實Solr的資料庫功能還包括添加更多不同類型的連接配接功能。資料不能總是在沒有許多煩人的副作用和限制的情況下被非規範化。Solr非常适合跨文檔提供非常複雜的連接配接功能,包括添加模糊連接配接或自然語言連接配接。也許與原始查詢的相關性可能會影響到第二個查詢中的文檔。在我的演講中,我談到了這個問題 - 一旦我們從資料庫中找到前5個最相關的專業術語,就可以用外行人的術語搜尋法律專業術語資料庫(汽車(car) - >機動車輛(motor-vehicle)),然後我們可以在“法律用行話語料庫”中的技術術語來搜尋法律相關術語。

越來越多的搜尋引擎已經成為了應用的核心内容,而不是一個附加在主體之上的裝飾物。當然,人們需要的不僅僅是搜尋。随着機器學習和自然語言處理等相鄰技術成為普通應用程式中越來越普通的元件,未來将十分令人期待。我們将真正生活在一個更聰明的世界,在這個世界裡,搜尋是電腦的耳朵和嘴巴!