网页的“搜索”功能是指你可以在这个搜索栏中搜索到你所在网站的部分或全部信息,支持模糊搜索、关键词搜索等。因为搜索范围越大,你花的时间就越长。对于页面前端搜索栏的设计,这个我就不介绍了。很简单。这里我主要介绍一下搜索功能的设计。
在设计功能之前,你需要考虑你的网页的“搜索”功能是哪个范围的,比如文章类别的网站。用户可以在“搜索栏”中输入一个词或词,只要标题、标签、简介、内容中有这个词或词的文章就会出现。他的搜索范围是标题、标签、简介和内容。只有在设计中定位了自己的功能范围,才能进入下一步的设计。
不建议将搜索数据放在关系数据库中。如果你的搜索只是在很小的范围内,内容不多,如果不支持模糊查询,可以放在关系数据库中。反之,一旦查询模糊,关系型数据库就不会取索引,就会导致全表扫描寻找与“搜索栏”相关的数据。如果您的表有大量的数据,您的搜索性能会更差。
建议你用ES(elasticsearch)进入数据存储,把你要搜索的数据放在这里,然后编写对接搜索界面。它的速度非常快。以下是对ES的介绍
ElasticSearch是一个分布式、高度可扩展的实时搜索和数据分析引擎。它可以轻松地使大量数据具备搜索、分析和探索的能力。充分利用ElasticSearch的横向可扩展性,可以使数据在生产环境中更有价值。ElasticSearch的实现原理主要分为以下几个步骤:首先用户向Elastic Search数据库提交数据,然后通过分词控制器对相应的句子进行分词,并将它们的权重和分词结果一起存储在数据中。用户在搜索数据时,根据权重对结果进行排序和评分,然后将返回的结果呈现给用户。Elasticsearch是用一个名为Logstash的数据收集和日志分析引擎以及一个名为Kibana的分析和可视化平台开发的。这三个产品被设计为一个集成的解决方案,称为“弹性堆栈”(以前称为“ELK堆栈”)。Elasticsearch可以用来搜索各种文档。它提供可扩展的搜索和接近实时的搜索,并支持多租户。Elasticsearch是分布式的,也就是说索引可以分成片段,每个片段可以有0个或者更多的副本。每个节点托管一个或多个碎片,并作为协调者将操作委托给正确的碎片。重新平衡和路由会自动完成。相关数据通常存储在同一索引中,该索引由一个或多个主切片和零个或多个重复切片组成。一旦创建了索引,就不能更改主切片的数量。Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有功能。它支持分面和过滤,如果新文档匹配注册查询,这对于通知非常有用。另一个特性叫做“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合存储NoSQL数据,但缺乏分布式事务。[1]《历史与发展》的编辑Shay Banon在2004年创建了Elasticsearch的前身,叫做Compass。在考虑Compass的第三个版本时,他意识到有必要重写Compass的大部分以“创建一个可扩展的搜索解决方案”。因此,他创建了“一个从零开始构建的分布式解决方案”,并使用了一个公共接口,即平等传输协议(通过插件集成)。