首页 / 知识
如何在网站中实现搜索功能?
2023-04-13 14:46:00

How do I implement Search Functionality in a website?我想为网站实现搜索功能(假设它类似于SO)。 我不想使用Google搜索类似的内容。 我的问题是: 我该如何实施? 我知道两种方法: 谁能告诉我要走哪条路? 优缺点都有什么? 更好,有更好的方法吗?
使用lucene,
它在Java和.net中可用。它也可以以zend框架模块的形式在php中使用。 Lucene完成了您想要的工作(为搜索到的项目建立索引),您必须跟踪Lucene索引,但是就性能而言,它比进行数据库搜索要好得多。顺便说一句,SO搜索由Lucene提供支持。 :D 这取决于您的网站的全面程度以及您想自己做多少。 如果您经营的小型网站没有进一步添加自定义搜索的可能性,请让Google进行工作(也许添加站点地图)并使用Google自定义搜索。 如果您使用sql引擎运行中型站点,请使用sql引擎的搜索功能。 如果您运行诸如J2EE或.Net之类的较重软件栈,请使用Lucene(一个强大的强大搜索引擎)或其.Net克隆lucene.Net。 如果要从应用程序中抽象搜索,并能够使用XML / HTTP和JSON API以语言无关的方式查询它,请查看solr。 Solr在后台运行lucene,但为其添加了一个不错的Web界面。 您可能想看看xapian和omega前端。从本质上讲,它是一个可用来构建搜索功能的工具包。 如果您使用的是Microsoft平台,则可以使用索引服务。这与IIS网站非常容易集成。 它具有所有基本功能,例如全文搜索,排名,排除并包括某些文件类型,您还可以通过html页面中的meta标签添加自己的meta信息。 做一个谷歌,你会发现吨! 解决此问题的最佳方法取决于您如何构造页面。 如果它们经常由许多不同的记录组成(如我想象的堆栈溢出页面),那么除非您进行大量工作来有效地重建数据库侧的页面,否则索引方法可能会产生更好的结果。 使用索引方法的缺点是周转时间。有一些变通办法(例如Google的站点地图之类的东西),但变通也很复杂。 如果您使用数据库路径,还应注意,如果现代搜索引擎系统具有要处理的链接数据,则它们的功能会更好,因此,找到一个可以理解数据库中"页面"之间链接的系统将起到积极作用。 这与您的问题有些正交,但是我强烈建议您使用RESTful搜索的想法。也就是说,要执行从未执行过的搜索,网站会将查询发布到/ searches /。要重新运行搜索,网站GETs / searches / {some id} 例如,这里有一些很好的文档可以找到。 (也就是说,我喜欢在可能的地方建立索引,尽管它是一种优化,因此可能为时过早。) 如果您的应用程序使用Java EE堆栈,而您正在使用Hibernate,则可以使用Compass Framework维护数据库的可搜索索引。 Compass Framework在后台使用Lucene。 唯一的问题是您无法复制搜索索引。因此,您需要使用集群数据库来保存索引表,或者使用已经添加到Compass Framework 2.x中的更新的基于网格的索引存储机制。 |
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为PyPython网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc用Python爬取百度搜索结果
用Python爬取百度搜索结果,百度,项目,分析,软件,网址,广告,时间,培训,粮食,标题,一、前言众所周知,百度上直接搜索关键字会出来一大堆东西,时常Python 3.6 中针对文件系统的神奇
Python 3.6 中针对文件系统的神奇方法,数字,代码,数据,标准,信息,培训,首次,工作,文件名,常数,Python3.6首次发布于2016年,尽管它已经发布了很Python 之模块重载的五种方法
Python 之模块重载的五种方法,环境,培训,方法,模块,文件夹,例子,下面,内容,语句,请看,python环境准备新建一个foo文件夹,其下包含一个bar.py文提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画Python中字典合并的实现方法
Python中字典合并的实现方法,培训,结果,以上,版本,字典,方法,函数,下面,背景,发现,TableofContents背景Methon1:适用于Python3.5及以上版本呢M学习python的三种方法
学习python的三种方法,项目,代码,公司,时间,工程,培训,中级,初级,资料,第一,Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序Python文件读取相关方法
Python文件读取相关方法,数据,位置,文件,中行,培训,方法,字节,内容,结果,字符串,我们知道,对文件的读取操作需要将文件中的数据加载到内存中,而Python文件读取相关方法
Python文件读取相关方法,数据,位置,文件,中行,培训,方法,字节,内容,结果,字符串,我们知道,对文件的读取操作需要将文件中的数据加载到内存中,而Python 多线程死锁问题的巧妙解决
Python 多线程死锁问题的巧妙解决方法,异常,持有,代码,情况,信息,管理,数据,包装,策略,预期,死锁死锁的原理非常简单,用一句话就可以描述完。python模块搜索路径
python模块搜索路径,标准,路径,模块,位置,系统,培训,通用,新增,文件,环境变量,在a.py中导入模块b的时候,python会做一系列的模块文件路径搜索