我有一个字典(以sql表格的形式),包含手机的型号和关于手机的文章(或只是一行)(以php或C中的字符串形式)。我想找出那篇文章中讨论的手机型号,但我不想进行强力搜索,即逐个搜索文本中的每个型号名称。字典搜索
此外,我正在考虑维护整个字典的哈希表,然后尝试匹配文章中的每一项工作的哈希值,然后查找冲突。但是由于字典非常大,这种方法的内存开销太大。
另外,如果根本没有数据库,即我们只有语言范围内的所有内容,以字符串形式表示数组和字符串形式的字典。
我有一个字典(以sql表格的形式),包含手机的型号和关于手机的文章(或只是一行)(以php或C中的字符串形式)。我想找出那篇文章中讨论的手机型号,但我不想进行强力搜索,即逐个搜索文本中的每个型号名称。字典搜索
此外,我正在考虑维护整个字典的哈希表,然后尝试匹配文章中的每一项工作的哈希值,然后查找冲突。但是由于字典非常大,这种方法的内存开销太大。
另外,如果根本没有数据库,即我们只有语言范围内的所有内容,以字符串形式表示数组和字符串形式的字典。
Inverted index
会有帮助。链接:Inverted index
将您的文章分成标记,过滤标记的模型名称。所以你可以建立一个索引,索引的关键是模型名称,索引的值是一个文章列表。
也许你可以添加一些额外的信息,如文章中出现的模型名称的位置。
如果您想使用C并且性能是您的愿望。我会建议为文章中的所有单词建立一个trie(http://en.wikipedia.org/wiki/Trie)。它比散列快一点,消耗的内存少于Dictionary。
这不容易在c中实现,但我相信你可以找到一个准备就绪的地方。
好运(:
为什么你在标签中有“c”? –
我知道C语言和PHP语言,并在其中任何一种中寻找解决方案。 – Coddy