请问有没有搜索引擎能做到Like级别的任意关键词精确查询?

举个例子,对于新闻【http://tech.163.com/15/0323/07/ALCIH40U000915BF.html】,在正文中,按顺序提取关键词:
1.马云私密
2.互联网行业
3.《DT(Data Technology)时代的特色》
4.鼠标和水泥

如果在百度或谷歌,输入这些关键词:
1.百度:【https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E9%A9%AC%E4%BA%91%E7%A7%81%E5%AF%86%20%E4%BA%92%E8%81%94%E7%BD%91%E8%A1%8C%E4%B8%9A%20%E3%80%8ADT%EF%BC%88Data%20Technology%EF%BC%89%E6%97%B6%E4%BB%A3%E7%9A%84%E7%89%B9%E8%89%B2%E3%80%8B%20%E9%BC%A0%E6%A0%87%E5%92%8C%E6%B0%B4%E6%B3%A5&rsv_pq=8f3313990009c780&rsv_t=4fb7bp2xNKBTlJda3A9uEHoV8XEtXeFrN%2BefnoawqDJAyUQqlDFVFFRQSKw&rsv_enter=0&rsv_sug3=2&rsv_n=2&inputT=987&rsv_sug4=1033

2.谷歌:【https://www.google.com.hk/search?q=%E9%A9%AC%E4%BA%91%E7%A7%81%E5%AF%86+%E4%BA%92%E8%81%94%E7%BD%91%E8%A1%8C%E4%B8%9A+%E3%80%8ADT%EF%BC%88Data+Technology%EF%BC%89%E6%97%B6%E4%BB%A3%E7%9A%84%E7%89%B9%E8%89%B2%E3%80%8B+%E9%BC%A0%E6%A0%87%E5%92%8C%E6%B0%B4%E6%B3%A5&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:zh-CN:official&client=firefox&gws_rd=ssl

搜索结果:百度的第二个搜索结果,谷歌的第一个搜索结果,就能找到。

但是,如果对关键字,再进行子串提取:
源串:
1.马云私密
2.互联网行业
3.《DT(Data Technology)时代的特色》
4.鼠标和水泥
提取子串:
1.云私
2.网行
3.《D
4.标和水

继续搜索:
1.百度:【https://www.baidu.com/s?wd=云私%20网行%20《D%20标和水&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=1&rsv_sug1=1&rsv_n=2】

2.谷歌:【https://www.google.com.hk/search?q=%E4%BA%91%E7%A7%81+%E7%BD%91%E8%A1%8C+%E3%80%8AD+%E6%A0%87%E5%92%8C%E6%B0%B4&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:zh-CN:official&client=firefox&gws_rd=ssl

也没搜到。

继续:我把这篇文章的正文内容,放入数据库(MS SQL Server 2014)的文章字段,然后用SQL搜:

    Declare @关键词1 Nvarchar(Max) = '云私',
    @关键词2 Nvarchar(Max) = '网行',
    @关键词3 Nvarchar(Max) = '《D',
    @关键词4 Nvarchar(Max) = '标和水';

(Select * From 表 Where 文章 Like '%' + @关键词1 + '%')
    Intersect
(Select * From 表 Where 文章 Like '%' + @关键词2 + '%')
    Intersect
(Select * From 表 Where 文章 Like '%' + @关键词3 + '%')
    Intersect
(Select * From 表 Where 文章 Like '%' + @关键词4 + '%')

结果是能找到这篇文章的。但是

问题来了:
请问有没有搜索引擎,比如 百度、谷歌之类,
或者
有没有搜索引擎组件,比如Lucene、Sphinx、Solr、Elasticsearch之类,能够完成这种【精确】查询?

阅读 7.7k
1 个回答

可以的,使用单字分词

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题