最近在弄xunsearch全文檢索索引技術,被他的自訂詞庫給搞暈了,碰到了幾點疑惑,望有大神能給解答一下,感激不盡!!!
1.增加自訂詞庫後的奇怪現象.
我在資料庫中有兩條化合物名稱的記錄,分別是丁二酸和α酮戊二酸二甲酯。在沒有加自訂詞庫的時候,我搜尋丁二酸,兩個化合物都會被搜出來,搜尋α酮戊二酸二甲酯的時候,也會搜尋出來兩個化合物。然後我在自訂詞庫中添加了α酮戊二酸二甲酯,再搜尋後,只會出現α酮戊二酸二甲酯這一個結果。但是,再往自訂詞庫中添加丁二酸後,進行搜尋,結果兩個化合物還是會出來。為什麼會這樣呢?為此,我還使用getQuery語句擷取了查詢詞,結果是α酮戊二酸二甲酯的傳回值是Xapain::Query(Zα酮戊二酸二甲酯:(pos=1))
,丁二酸的傳回值是Xapian::Query((丁二酸:(pos=1) SYNONYM(丁二:(pos=89) OR 二酸:(pos=90))))
。最初我以為是同義字的問題,但是為什麼α酮戊二酸二甲酯沒有同義字,而丁二酸會產生同義字呢?最重要的是,當我用getAllSynonyms擷取同義字列表時,顯示的是空!!!求大神解答!
2.自訂詞庫中的TF、IDF值的作用
DF、IDF隻影響最後的相關度評分,而xunsearch底層用的是Xapian,Xapian使用的是BM25演算法計算相關度。式子中的IDF和TF是演算法根據當前文檔計算出來的,為什麼還需要我們自訂。有人解釋說是為了提高最後搜尋的排名,能不能具體舉例說明一下為什麼會提高了(難道我們自訂TF和IDF之後,xunsearch會直接用我們自訂的TF、IDF計算相關度評分而不是自動從文檔中計算?)
回複內容:
最近在弄xunsearch全文檢索索引技術,被他的自訂詞庫給搞暈了,碰到了幾點疑惑,望有大神能給解答一下,感激不盡!!!
1.增加自訂詞庫後的奇怪現象.
我在資料庫中有兩條化合物名稱的記錄,分別是丁二酸和α酮戊二酸二甲酯。在沒有加自訂詞庫的時候,我搜尋丁二酸,兩個化合物都會被搜出來,搜尋α酮戊二酸二甲酯的時候,也會搜尋出來兩個化合物。然後我在自訂詞庫中添加了α酮戊二酸二甲酯,再搜尋後,只會出現α酮戊二酸二甲酯這一個結果。但是,再往自訂詞庫中添加丁二酸後,進行搜尋,結果兩個化合物還是會出來。為什麼會這樣呢?為此,我還使用getQuery語句擷取了查詢詞,結果是α酮戊二酸二甲酯的傳回值是Xapain::Query(Zα酮戊二酸二甲酯:(pos=1))
,丁二酸的傳回值是Xapian::Query((丁二酸:(pos=1) SYNONYM(丁二:(pos=89) OR 二酸:(pos=90))))
。最初我以為是同義字的問題,但是為什麼α酮戊二酸二甲酯沒有同義字,而丁二酸會產生同義字呢?最重要的是,當我用getAllSynonyms擷取同義字列表時,顯示的是空!!!求大神解答!
2.自訂詞庫中的TF、IDF值的作用
DF、IDF隻影響最後的相關度評分,而xunsearch底層用的是Xapian,Xapian使用的是BM25演算法計算相關度。式子中的IDF和TF是演算法根據當前文檔計算出來的,為什麼還需要我們自訂。有人解釋說是為了提高最後搜尋的排名,能不能具體舉例說明一下為什麼會提高了(難道我們自訂TF和IDF之後,xunsearch會直接用我們自訂的TF、IDF計算相關度評分而不是自動從文檔中計算?)