我想開發一個複雜的文本搜索引擎。 我有很多書籍的數千個文本頁面。 我需要搜索包含指定複雜邏輯標準的頁面。 這些標準幾乎可以包含任何以下幾點:具有邏輯合併函數的正則表達式與索引的SQL
答:完整的單詞。 B:詞根(半詞與詞幹;即具有某些關鍵字母的所有詞)。
C:Word模板(在某些語言中,根填充在特定模板中以形成各種詞類,例如adjactives,過去/現在動詞...)。 D:邏輯連接:AND/OR/XOR/NOT/IF/IFF和括號來表示優先級。
現在,將數據庫中的頁面全文(未編入索引)並使用SQL和正則表達式搜索全部文本會更快嗎?
或者構建word/root/template-page-location元組的索引會更好嗎? 因此,我們可以加強搜索單個詞/根/模板。 但是,當我們在查詢中引入邏輯連接詞時,它會變得棘手。 我想在這種情況下執行以下步驟:
1:單獨搜索指定查詢中的每個單獨的單詞/根/模板。
2:在優先基礎上,將同時合併兩個結果列表(步驟1)depedning的邏輯運算符
例如,如果我們正在尋找「他與(是或曾經是)」:
1:我們將搜索「他」,「是」和「是」分開,並獲得每個單詞的結果列表。
2:使用合併函數OR-MERGE合併「is」和「was」的結果列表。
3:使用合併函數AND-MERGE將OR-MERGE函數的合併結果列表與「he」合併結果列表合併。
然後,作爲指定查詢的結果返回步驟3的結果。
你認爲gurues是什麼?哪個更快?任何更好的想法?
謝謝大家提前。
謝謝您的時間來回答我的問題。我發現使用Oracle的BerkeleyDB合併二進制搜索性能的功能更加可行。我的決定是因爲阿拉伯語所需的支持非常複雜,而且我無法研究全文數據庫。 – geeko 2010-05-24 04:01:02