构建搜索引擎

时间:2014-05-23 20:50:55

标签: algorithm search-engine

我最近的采访中有以下面试问题。我能够提供部分答案,但我无法涵盖所有​​边缘案例。问题如下:

公司必须建立一个搜索引擎,他们有一组可以搜索的单词(多个单词可以组合在一起进行有意义的查询)。

现在假设该列表包含以下词语 - 鞋子,adidas,nike,拖鞋,拖鞋,耐克等等。

现在有一位用户输入了nikeshoes' nikeshoes' (请参阅单词之间没有空格)但由于该单词没有该单词,因此不会返回任何结果。但是现在,我们希望通过将给定的查询修改为有意义的查询来为用户提供正确的结果来解决这个问题(这是Google在忘记在2个有意义的单词之间留出空间时所做的事情)。怎么办呢?

我给出的解决方案是员工' K Gram' (其中k = 2)技术我得到的词是ni,ik,ke,es,sh,ho,oe,es和我用它来训练这些词然后用它们检查它们是否真的是有意义的词。但随后面试官问我一个新的问题,即如果输入新查询后会发生什么?nikesshoes'。为此,我无法提供答案。

然后我想通过比较每个单词并尝试检查它是否存在于trie中来使用Trie Data结构,但它有与上面提到的相同的问题。

可采用的另一种技术是Damerau-Levenshtein技术,但它也有同样的问题。

所以任何人都可以给我这个问题的解决方案(我不是要求代码,但欢迎你提供代码)。

感谢。

0 个答案:

没有答案