这个功能的实现有几种不同的思路。
大概半个月前,我在网上查了相关内容,心里很凉。google里面从2009年到2011年都有人问这个问题。但是没有一个人回答。
当网上都没人回答的时候就是尴尬的时候。后来吧,还好,总监是做搜索出身的。不懂就问呗。
提出的方案大概有3套:
1。新建张表,然后这张表专门用来存放与相关搜索的字段。将表的数据导入到缓存中,每次从缓存中查询。即不消耗数据库连接,也很快(最简单的方法,对应小型网站没问题,除了需要维护随时插入数据之外,就是数据不全这个缺点)
2。对用户输入的信息进行验证,如果数据库有就不存,并且提示,如果没有就存入数据库。并对这个表的数据建缓存。
3。研究solr是否支持类似功能。(答案是有的,Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeThisHandler 实现了一样的功能。)
(第3套想法是我做了第一套之后查资料查的,正准备改为第3套方案)
下面这段话转自其它人的博客:
在 Google 上尝试一个查询,您会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档。Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeThisHandler 实现了一样的功能。如上所述,MLT 是与标准 SolrRequestHandler 集成在一起的;MoreLikeThisHandler 与 MLT 结合在一起,并添加了一些其他选项,但它要求发布一个单一的请求。我将着重讲述 MLT,因为使用它的可能性更大一些。幸运的是,不需要任何设置就可以查询它,所以您现在就可以开始查询。
MLT 要求字段被储存或使用检索词向量,检索词向量以一种以文档为中心的方式储存信息。MLT 通过文档的内容来计算文档中关键词语,然后使用原始查询词语和这些新词语创建一个新的查询。提交新查询就会返回其他查询结果。所有这些都可以用检索词向量来完成:只需将 termVectors="true" 添加到 schema.xml 中的 <field> 声明。
MoreLikeThisComponent 参数:
参数 说明 值域
mlt 在查询时,打开/关闭MoreLikeThisComponent 的布尔值。 真|假
mlt.count 可选。每一个结果要检索的相似文档数。 > 0
mlt.fl 用于创建 MLT 查询的字段。 模式中任何被储存的或含有检索词向量的字段。
mlt.maxqt 可选。查询词语的最大数量。由于长文档可能会有很多关键词语,这样 MLT 查询可能会很大,从而导致反应缓慢或可怕的 TooManyClausesException,该参数只保留最关键的词语。 >0
example url:
http://localhost:8080/solr/test/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&mlt=true&mlt.fl=content&mlt.count<10
http://localhost:8983/solr/select?q=apache&mlt=true&mlt.fl=manu,cat&mlt.mindf=1&mlt.mintf=1&fl=id,score
分享到:
相关推荐
在提供的压缩包文件"类似百度提示"中,可能包含了实现这种搜索提示功能的相关代码示例,包括前端展示和后端处理部分。你可以根据实际需求进行修改和扩展,以适应你的项目需求。总的来说,实现一个类似百度的搜索提示...
总之,"最新版windows solr-8.6.0.zip"提供了在Windows环境中运行Solr的便捷途径,无论是用于快速原型开发还是大规模生产环境,都能体验到Solr的强大搜索功能和灵活的配置选项。通过深入理解和实践,我们可以构建...
在这个例子中,我们将深入探讨如何利用Lucene实现一个类似于百度搜索的功能。 首先,我们需要了解Lucene的基本工作原理。Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和查询(Query)。每...
【标题】"仿百度要搜索"揭示了这个项目的核心目标是模仿百度搜索引擎的功能,以便提供类似的服务。在IT行业中,创建一个搜索引擎涉及到一系列复杂的技术和算法。首先,我们需要理解搜索引擎的基本工作原理,它通常...
- 搜索引擎集成:可以利用Elasticsearch或Solr这样的全文搜索引擎,建立索引并提供高效的搜索能力。 - 关键词匹配:对文档内容进行分词,建立关键词索引,实现精确匹配和模糊搜索。 5. **用户系统** - 用户注册...
【标题】"自己总结 仿百度文库例子 有说明" 涉及的主要知识点是构建一个在线文档阅读平台,类似百度文库的功能实现。在这个过程中,开发者需要掌握以下技术点: 1. **前端框架与库**:为了实现用户友好的界面和交互...
【明日知道】是一个模仿百度知道构建的在线问答平台,它具备了类似的功能,让用户能够提问、回答问题,分享知识和经验。这个项目是完整的,并且已经包含了一个数据库,这意味着你可以直接部署并开始使用。 在这样的...
标题中的“仿baidu,google出现下拉菜单”指的是在网页搜索框中实现类似百度和谷歌的自动补全功能,即用户在输入关键词时,系统会根据已输入的部分字符预测可能的完整搜索词,并在下拉菜单中显示这些推荐选项。...
5. 全文检索:全文检索就是对一篇文章进行索引,可以根据关键字搜索,类似于 MySQL 里面的 LIKE 语句。 Elasticsearch 与关系型数据库的对比 1. Database(数据库):关系型数据库中的数据库等价于 Elasticsearch ...
Apache Lucene是一个开源的Java库,设计用于高效地处理文本搜索需求,它为开发人员提供了在应用程序中实现高级搜索功能所需的工具。 【描述】"LuceneWebsite" 的描述虽然简洁,但我们可以推测这是一个围绕Apache ...
- **信息检索**:通过搜索引擎(如百度)快速找到问题的答案。 - **打车服务**:在打车应用中搜索附近的车辆。 #### 二、ELK技术栈详解 **ELK**技术栈是指Elasticsearch、Logstash和Kibana这三个组件组成的集成...
8. 搜索功能:类似于百度贴吧的搜索功能,HTieBa可能集成了全文搜索引擎(如Elasticsearch或Solr),提供快速准确的帖子搜索。 9. API接口:为了与其他系统集成或扩展,HTieBa可能提供了API接口,允许第三方应用或...
FlyCms 是一个类似知乎以问答为基础的完全开源的JAVA语言开发的社交网络建站程序,基于 Spring Boot+Bootstrap3+MyBatis+MYSQL+Solr+Ehcache 应用架构,专注于社区内容的整理、归类和检索,它集合了问答,digg,wiki...
检索功能则依赖于高效的搜索引擎,如Elasticsearch或Solr,通过关键词、全文搜索或高级查询条件来查找文档。 5. **权限管理**: - 权限控制系统确保只有授权用户才能访问特定文档。这涉及到角色、用户组和权限分配...
Solr是搜索引擎组件,支持大规模的全文搜索;Mahout则提供了机器学习算法,实现数据挖掘功能;此外,还有如Hama的BSP模型,用于大规模科学计算,以及Zookeeper的分布式锁服务等。\n\n【云计算与Hadoop】\n\n在云计算...