Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 为什么';谷歌不提供部分搜索吗?是不是因为索引太大了?_Search_Substring - Fatal编程技术网

Search 为什么';谷歌不提供部分搜索吗?是不是因为索引太大了?

Search 为什么';谷歌不提供部分搜索吗?是不是因为索引太大了?,search,substring,Search,Substring,Google/GMail/etc.不提供部分或前缀搜索(例如stuff*),尽管它可能非常有用。我经常在GMail中找不到邮件,因为我不记得确切的表达方式 我知道有词干之类的,但这不一样,特别是当我们谈论英语以外的语言时 谷歌为什么不添加这样的功能?是因为索引会爆炸吗?但是数据库提供了部分搜索,所以肯定有很好的算法来解决这个问题 这里的问题是什么?因为你无法理智地得出汽车的含义*: 汽车? 地毯? 胡萝卜 谷歌的算法通过比较文档文本和外部入站链接来确定文档的内容。有了这些通配符,所有这些算法都变

Google/GMail/etc.不提供部分或前缀搜索(例如stuff*),尽管它可能非常有用。我经常在GMail中找不到邮件,因为我不记得确切的表达方式

我知道有词干之类的,但这不一样,特别是当我们谈论英语以外的语言时

谷歌为什么不添加这样的功能?是因为索引会爆炸吗?但是数据库提供了部分搜索,所以肯定有很好的算法来解决这个问题


这里的问题是什么?

因为你无法理智地得出汽车的含义*:

汽车? 地毯? 胡萝卜


谷歌的算法通过比较文档文本和外部入站链接来确定文档的内容。有了这些通配符,所有这些算法都变成了垃圾

谷歌实际上并没有存储它搜索的文本。它存储搜索词、指向页面的链接以及该词在页面中的位置。这种数据结构在传统的数据库意义上是索引的。我敢打赌,使用通配符会使索引的索引速度非常慢,正如开发人员Art所说,这不是很有用。

可以基于正则表达式进行搜索,因此他们知道如何进行搜索。当然,与web搜索相比,代码搜索必须索引的数据量很小。在web搜索中使用正则表达式或通配符搜索将增加索引大小,并将性能降低到不切实际的水平。

在Google中查找任何内容的秘诀是输入搜索词(或引用短语)的组合,这些词很可能出现在您要查找的内容中,但不太可能同时出现在不相关的内容中。通配符表达式的作用与此相反。只需输入期望通配符匹配的术语,记住Google将为您进行词干分析。早在计算机使用steam的时候,Lycos(iirc)就有模式匹配功能,但几年前就关闭了。我猜这会给他们的服务器增加太多的负载。

谷歌会搜索部分单词。不过Gmail没有。既然你问这里有什么问题,我的回答是缺乏努力。这个问题有一个解决方案,可以在恒定的时间和线性空间中搜索,但对缓存不太友好:后缀树。后缀数组是另一个更方便缓存且仍能节省时间的选项。

可以通过Google文档实现-请参阅本文:


在这种情况下,它应该返回所有结果。用户想要它,用户就得到它。我想这在技术上是可以做到的,但对大多数人来说,这可能毫无意义。可能会向谷歌提交请求。谁知道呢,也许这是他们错过的一个好主意?后缀树的另一个选择是N-gram。它们的性能和存储效率都不高。但还是有一个解决方案。另一个选择是停止使用Gmail,重新使用Outlook.:-)虽然谷歌搜索部分单词,但它不会匹配部分数字!这一点必须加以区分。例如,如果您查找部分序列号,则可能根本得不到任何相关结果。我现在已经尝试了很多次,相信这是行不通的。“谷歌确实搜索了部分单词。”但事实并非如此。但它搜索同义词。如果我在谷歌上搜索“locat”,我的搜索结果包括“locations”和“locator”。它没有说“您是指定位吗?”,也没有显示消息“显示定位结果。改为查看locat的结果”,就像您有明显的打字错误一样(实际上,前几个结果与首字母缩略词“locat”匹配)。它看起来真的像是以“locat”开头的匹配词。我们如何测试以确定它是在搜索部分单词还是同义词?我发现了一个可以进行前缀(stuff*)和邻近搜索的搜索引擎。单击“高级搜索”以查找这些选项。@HughBrackett感谢您的提示,但我担心Exalead同时已将前缀搜索从其选项中删除,即使在高级搜索中也是如此:-(找不到它。奇怪的解决方案,但确实有效。不适合日常使用,但在搜索特定的正则表达式模式时非常有用(使用label
all
)。