在查看DnD Insider和Kindle应用程序之类的产品时,用户可以在大型文本数据结构中快速搜索匹配的文本字符串。如果我要制作一个允许用户快速在“规则手册”(或类似文本)中搜索匹配条目并提取数据以进行读取的Web应用程序,该如何组织数据?
我认为将所有数据存储到内存中不是一个好主意。但是,如果将其存储在某种数据库中,什么是搜索数据库并检索适当的匹配条目的好方法?
到目前为止,我相信我将使用Boyer-Moore算法实际进行搜索。我可以将规则文本的各个部分放入不同的数据库条目中。用户搜索将优先于章节标题文本搜索章节标题。由于文本将是静态的并且不能由用户编辑,所以也许可以使用存储每个单词的数组来工作?
答案 0 :(得分:1)
通常将某种倒排索引用于此目的:https://en.wikipedia.org/wiki/Inverted_index
基本上,这是每个单词到它出现的位置列表的映射。每个“位置”可以是(文档ID,出现次数),也可以是更精确的名称,如果您想支持词组搜索,或者要为标题中的匹配项赋予更多的权重等。
搜索结果通常以tf-idf的某些变体进行排名:https://en.wikipedia.org/wiki/Tf%E2%80%93idf