1. 查询串为 纯汉字,查询出被拆分为单个字,然后使用全文检索,尽可能找出包含查询串的 POI,查找范围为所有POI拥有的文本信息。
例如搜索 “顺轩”,返回结果为:
http://www.dianping.com/search/keyword/1/0_顺轩
,
而搜索“轩顺”,返回结果为:
http://www.dianping.com/search/keyword/1/0_轩顺
两个个搜索返回的结果是一致的,可得使用的匹配步骤比较简单;返回列表的排序规则可以总结为两条:
a. POI中查询出是否按照查询串中的顺序连续出现
b. 名称包含优先于地址包含
c. 匹配发生在 名称,标签,地址 等
2. 查询串为 纯拼音,不对查询串(拼音串)进行任何拆分
例子1,shuguang
http://www.dianping.com/search/keyword/1/0_shuguang
例子2,shuguan
http://www.dianping.com/search/keyword/1/0_shuguan
两个搜索返回的结果基本一致,并且同时出现提醒,你要找的是不是
曙光
书馆
例子3,caguan
http://www.dianping.com/search/keyword/1/0_caguan
你要找的是不是
茶馆
例子4,canguan(餐馆)
http://www.dianping.com/search/keyword/1/0_canguan
上海站全部商户中,没有找到"canguan"(0)
例子5,cacanting
http://www.dianping.com/search/keyword/1/0_cacanting
你要找的是不是
查餐厅
茶餐厅
例子6,xijiaobailian(西郊百联)
http://www.dianping.com/search/keyword/1/0_xijiaobailian
你要找的是不是
西郊百联
例子7,xijiaobalian
http://www.dianping.com/search/keyword/1/0_xijiaobalian
你要找的是不是
西郊百联
例子8,xijiaoblian
http://www.dianping.com/search/keyword/1/0_xijiaoblian
上海站全部商户中,没有找到"xijiaoblian"(0)
例子
由上面的例子,可以大概推测如下:
a. 内部有一个词典,保存了 词和拼音 映射关系,
b. 先使用 拼音进行匹配搜索,匹配策略可能是:
b1. 精准匹配
b2. 包含匹配
b3. 模糊匹配(最小编辑距离 < 某个阙值,比如2,参考例子6,7,8,读者可自行尝试其他组合)
b4. 没有找到任何匹配,即返回空,参考例子4.(canguang竟然没有,很让人费解)
c. 利用拼音映射到的汉字,回归到第一条中的 纯汉字 搜索
d. 匹配发生在 名称,标签,地址 等
另外,
例子9,jiaoda
http://www.dianping.com/search/keyword/1/0_jiaoda
你要找的是不是
交大
例子10,jiada
http://www.dianping.com/search/keyword/1/0_jiada
你要找的是不是
佳达
例子11,jiaod
http://www.dianping.com/search/keyword/1/0_jiaod
上海站全部商户中,没有找到"jiaod"(0)
例子12,shangda
http://www.dianping.com/search/keyword/1/0_shangda
你要找的是不是
散打
上大
杉达
例子13,shangd
http://www.dianping.com/search/keyword/1/0_shangd
上海站全部商户中,没有找到"shangd"(0)
例子14,sangda
http://www.dianping.com/search/keyword/1/0_sangda
你要找的是不是
散打
上大
杉达
例子15,suguang
http://www.dianping.com/search/keyword/1/0_suguang
你要找的是不是
曙光
书馆
由上面的例子可以推测,b3 的描述可能是不正确的(例子9,11不符合
最小编辑距离匹配),不能完全断定 -- 查询使用了 最小编辑距离匹配,应该还加入了 口音 的考虑(对比 例子15 与前面的例子1,2):
<1> 不同的口音,相同的拼音,存在不同的发音,考虑了同一个拼音,近似发音的匹配
<2> 不同的口音,不同的拼音,存在近似的发音,
后续有新发现,继续补充
3. 查询串为 汉字+拼音
例子16,属guang
http://www.dianping.com/search/keyword/1/0_属guang
你要找的是不是
曙光
书馆
例子25,素guang
http://www.dianping.com/search/keyword/1/0_素guang
你要找的是不是
曙光
书馆
例子17,属guan
http://www.dianping.com/search/keyword/1/0_属guan
你要找的是不是
曙光
书馆
例子18,shu光
http://www.dianping.com/search/keyword/1/0_shu光
你要找的是不是
曙光
书馆
例子19,shu广
http://www.dianping.com/search/keyword/1/0_shu广
例子20,shang大
http://www.dianping.com/search/keyword/1/0_shang大
例子21,shang大lei
http://www.dianping.com/search/keyword/1/0_shang大lei
例子22,shanglei大
http://www.dianping.com/search/keyword/1/0_shanglei大
上海站全部商户中,没有找到"shanglei大"(0
例子23,上da
http://www.dianping.com/search/keyword/1/0_上da
例子24,西jiaobailian
http://www.dianping.com/search/keyword/1/0_西jiaobailian
你要找的是不是
西郊百联
a. 首先不区分 拼音 汉字,进行 全文检索,找到包含整个串的POI,不考虑 查找单元 的顺序
a1. 连续的拼音视为一个查找单元,单个汉子视为查找单元,参考例子20,21,22
a2. 查找不到包含所有 查找单元 的 POI系统,转到 b
b. 汉字映射为拼音,转行为 第二条 纯拼音 搜索,注意 例子17,25