Home >Backend Development >PHP Tutorial >百度的搜索拼音联想功能是大致下的原理是怎样的呢 多谢

百度的搜索拼音联想功能是大致下的原理是怎样的呢 多谢

WBOY
WBOYOriginal
2016-06-13 11:11:151242browse

百度的搜索拼音联想功能是大致上的原理是怎样的呢 谢谢!
在百度中  输入guangzhou下方就会提示广州、广州新闻。我在想百度是不是将一些热门关键字,然后用一个字段记住这些关键字的拼音;搜索的时候就直接查这个表。如果是拼音,就模糊匹配这个拼音标示列。完成匹配后将结果返回。这些只是我的想象,好像当中还有关键字权重机制。谷歌找不到相关资料;是不是有其它方式实现我没想到的呢。求助大侠 谢谢!


------解决方案--------------------
前阵子和公司搜索部的人打了很多交到,了解了搜索引擎的工作大致原理。

搜索引擎内部有很多词表:

停词表,建义词表,同义词表、汉字-拼音的词表、suggest。

当你在搜索引擎上输入一个中文短句,搜索引擎首先会进行分词,然后将这些词,分别去上面提到的几个词表中查找有没有相关联的信息。如你所说的,就会去查找拼音-汉字的词表。遇到guangzhou = 广州,就会自动翻译过来。然后优先拿广州去进行搜索。
当你输入一个错误词后,可能会被搜索引擎的suggest纠正过来并提示你:您要找的是不是xxx?

其实上面只是搜索引擎处理搜索请求的其中一个分支,一次搜索会并行进行很多请求。
比如你在搜索引擎输入个短句。

搜索引擎首先会确定要搜索的内容:
1 整句
2 标准分词(可以理解为按中文语法分词)
3 自然分词(按单字、空格、标点进行分词)
...

然后分表拿每个分支,上面提到的那些辅助的词表,优化将要搜索的内容。
几个分支同时请求,拿到多个结果集。
接下来就是处理排序的问题了,一般来说,整句搜索拿到的结果相关度最高,所以权重也最高,理应排在第一位。但现实中的搜索引擎可能还要考虑到推广位,以及你要搜索的内容有更加官方的结果(比如你搜nginx,nginx的官方网站应该排在第一位)。或者是百度的百度推广,它可能会放在前面。

大致就是这样,实际上排序的逻辑是非常复杂的。它会根据好几个维度来确定排序结果,他们称这些叫“曲线”。当他调整每个维度的参数后,对排序结果都会产生影响。


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn