首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效查询大型文档集中的短语

高效查询大型文档集中的短语
EN

Stack Overflow用户
提问于 2020-07-07 20:10:42
回答 1查看 134关注 0票数 2

在一次采访中,我收到了一个问题,要求我去为一个在线图书馆设计一个搜索引擎,里面有成千上万的文档和数百万单词的。最初,面试官只要求我搜索单个单词,澄清:

搜索确切的关键字(“溢出”返回true,而"overflo“not)

  • Case-sensitivity可以忽略

)

我的回答是使用爬虫算法,在执行任何查询之前,遍历每个文档并创建一个查找表,该查找表存储文档中使用给定单词的信息。然后,一旦执行了查询,算法所要做的就是在查找表中找到单词,并返回使用该词的文档列表。

在第二步,他们问我,如果他们想搜索多个单词(不一定是连续的),我会做什么?我的回答是对每个单词进行新的查询,并找到结果的交集。

最后,面试官问我,如果他们想让我在上查询连续单词或短语,我会怎么做?“堆栈溢出”)。此时,我的查找表失败了,因为在连续的单词之间没有联系,而且我无法在这种方法中找到解决方案。我如何处理这类查询?我最初的答案和设计有什么问题吗?我在网上搜索过,但没有发现任何值得注意的东西。

EN

回答 1

Stack Overflow用户

发布于 2020-07-08 18:01:25

对于第二种情况,生成映射,使每个键都是一个单词,每个值都是一组具有以下属性的对象

代码语言:javascript
复制
{
  string document name : location/document_name,
  integer index : index, //location in document,
  toString : hash the object
}

然后,当您需要找到“堆栈溢出”的结果时

对于集合1中的所有元素,该值是否存在于set 2中,但使用item_index + 1进行了修改。

得到两个单词的结果,但只返回文档名。如果有三个单词,那么对两个单词执行相同的处理,但对于第三个单词,只检查单词1和单词2中的匹配项,并检查这些项是否存在于带有item_index +1的集合3中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62783153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档