天天看點

解決HubbleDotNet搜尋引擎索引資料不全的問題

      以前當資料庫使用mysql的時候沒問題,但當使用了monogodb做資料源之後,經常出現資料無法全部自動索引的情況。比如有10w的表,常常隻能索引到3w甚至更少,乃至每次索引的數量都不同。

  這件事拖了我很久,萬不得已看日志查源代碼,才發現是一個程式上的bug.

  系統日志記錄如下:

    找到對應的源代碼,synchronizecanupdate.cs,位置如下:

      很清楚,datarow中,沒有year這個字段。但是我在建立索引 表的時候,是添加了一個可空字段year的啊,更何況,其他條資料的索引都沒問題,但就會遇到一些資料row沒有year. 字段。可能是hubbledotnet對mongodb的驅動支援不夠完善吧,在中間的轉換出了問題,改進也很簡單:

另外的問題如下:

    明明我在journalname 存儲的是一個nvarchar字段,此處卻一定要提示我所需類型是double,系統腦抽麼,這也是mongoadapter的映射沒做好,好在這種情況在整個資料集中出現的次數很少,我加上try-catch,輸出了log日志,解決了這個問題(o(∩_∩)o~)。

  以上兩個問題解決之後,搜尋引擎可以正确檢索全部資料了,好開心。

  好水的文章,能解決别人的問題也是好的,雖然解決方法沒那麼優雅,而且hubble現在還有人用麼?默默的匿了。