我們有兩個(MySQL)數據庫,其中一個大約有200.000個產品(如「Samsung Galaxy S4」,db-size 200 MB),另一個大約有1000萬篇文章(純文本,db大小20GB)產品數據庫中的一個或多個產品名稱。現在,我們希望在文章文本中查找產品名稱,並將它們存儲爲文章的各個面,同時將它們在elasticsearch中編入索引。使用正則表達式來查找產品非常緩慢,我們考慮了Apache OpenNLP和Stanford命名實體識別器,因爲我們都需要訓練自己的模型,並且在github上有一些項目將這些NER工具集成到elasticsearch中,似乎已經準備好用於生產用途。在2000萬篇文章中找到200,000個產品名稱的有效方法?
產品和文章每天都在添加,所以我們必須每天運行一次完整的認證。 NER是否要走?還是其他想法?我們不必瞭解文本的語法等,我們只需要儘可能快地找到產品名稱字符串。我們無法實時進行計算,因爲這種方法會變慢,所以我們必須預先計算物品和產品之間的連接並將它們存儲爲小平面,因此我們可以在應用程序中快速查詢它們。
那麼,你有什麼建議在如此多的文章中找到如此多的產品名稱?
你可以嘗試使用布爾全文搜索,肯定它會更快:https://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html – Stephan
什麼樣的更快任務?在elasticsearch中建立索引時,我們需要爲每篇文章找到所有匹配的產品。所以如果我們建立一個完整的索引,我們必須在所有2000萬篇文章中搜索所有200,000個產品名稱。在文章中使用「MATCH AGAINST」查詢產品名稱可能是一種選擇,但不會使用elasticsearch在這裏更好?那些在RAM中完全運行的東西呢? – ak2