我有一個字典(以sql表格的形式),包含手機的型號和關於手機的文章(或只是一行)(以php或C中的字符串形式)。我想找出那篇文章中討論的手機型號,但我不想進行強力搜索,即逐個搜索文本中的每個型號名稱。字典搜索
此外,我正在考慮維護整個字典的哈希表,然後嘗試匹配文章中的每一項工作的哈希值,然後查找衝突。但是由於字典非常大,這種方法的內存開銷太大。
另外,如果根本沒有數據庫,即我們只有語言範圍內的所有內容,以字符串形式表示數組和字符串形式的字典。
我有一個字典(以sql表格的形式),包含手機的型號和關於手機的文章(或只是一行)(以php或C中的字符串形式)。我想找出那篇文章中討論的手機型號,但我不想進行強力搜索,即逐個搜索文本中的每個型號名稱。字典搜索
此外,我正在考慮維護整個字典的哈希表,然後嘗試匹配文章中的每一項工作的哈希值,然後查找衝突。但是由於字典非常大,這種方法的內存開銷太大。
另外,如果根本沒有數據庫,即我們只有語言範圍內的所有內容,以字符串形式表示數組和字符串形式的字典。
Inverted index
會有幫助。鏈接:Inverted index
將您的文章分成標記,過濾標記的模型名稱。所以你可以建立一個索引,索引的關鍵是模型名稱,索引的值是一個文章列表。
也許你可以添加一些額外的信息,如文章中出現的模型名稱的位置。
如果您想使用C並且性能是您的願望。我會建議爲文章中的所有單詞建立一個trie(http://en.wikipedia.org/wiki/Trie)。它比散列快一點,消耗的內存少於Dictionary。
這不容易在c中實現,但我相信你可以找到一個準備就緒的地方。
好運(:
爲什麼你在標籤中有「c」? –
我知道C語言和PHP語言,並在其中任何一種中尋找解決方案。 – Coddy