Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 我应该只是查询数据库还是使用合适的搜索引擎解决方案?_Database_Search_Solr - Fatal编程技术网

Database 我应该只是查询数据库还是使用合适的搜索引擎解决方案?

Database 我应该只是查询数据库还是使用合适的搜索引擎解决方案?,database,search,solr,Database,Search,Solr,我有一个新闻网站,最终会有很多文章。我需要实现搜索功能,我知道solr是当今实现这一功能最流行的软件解决方案之一 该网站可能会或可能不会获得高流量,但我必须实现搜索功能,这是专为高流量网站设计的 使用像solr这样的搜索引擎而不是仅仅查询数据库(mysql)中的内容并将其显示给用户有什么好处?这仅仅是因为像solr这样的搜索引擎产品在搜索方面具有卓越的性能,而且(根据我所读到的)在搜索方面具有更大的灵活性吗?我不是在寻找像“使用solr”这样的答案,我在寻找关于为什么不使用数据库的解释。它们解决

我有一个新闻网站,最终会有很多文章。我需要实现搜索功能,我知道solr是当今实现这一功能最流行的软件解决方案之一

该网站可能会或可能不会获得高流量,但我必须实现搜索功能,这是专为高流量网站设计的


使用像solr这样的搜索引擎而不是仅仅查询数据库(mysql)中的内容并将其显示给用户有什么好处?这仅仅是因为像solr这样的搜索引擎产品在搜索方面具有卓越的性能,而且(根据我所读到的)在搜索方面具有更大的灵活性吗?我不是在寻找像“使用solr”这样的答案,我在寻找关于为什么不使用数据库的解释。

它们解决不同的问题。设计用于搜索的应用程序与传统数据库(SQL和NoSQL变体)具有不同的核心功能集,因为需求不同,使用也不同

如今,与搜索相关的数据库功能之间存在一些重叠,但如果我们使用标准数据库交互作为起点,那么编写“查找包含这三个词的文章”是一项您必须手动处理才能解决的任务。添加您通常希望使搜索性能良好并为用户提供相关结果的所有其他内容,您就会遇到与常规数据库试图解决的问题截然不同的问题

一些面向搜索的服务做得更好的功能:

术语和字段权重:如果“标题”中有匹配项,则其权重应大于“文本”中的匹配项。但是你也可能会有一个“旧”因素影响分数,因此根据用例的不同,字段和特性之间的所有这些权重都可以调整以解决几乎所有的问题

文本规范化和处理:您可能希望在索引时展开同义词。搜索ipod和i-pod可能会得到相同的结果。窗户和窗户。这些操作是大多数文档搜索引擎的基础。您可能希望允许字段执行语音匹配(单词的发音,而不是它们的书面形式),并且您可能希望与精确匹配的分数不同。可能会让您了解一些可用于文本处理的功能

刻面/导航器:我搜索的文档中有多少在xyz字段中具有不同的值,它们的计数是多少?您可能在许多网站上都看到过此功能,例如“按文件类型筛选”、“仅显示最近7天、过去31天、过去365天的点击次数”等,以及每个bin的文档计数

突出显示:匹配文本的哪一部分,并提取适当的片段,我可以将其返回给最终用户显示。你每次在谷歌搜索时都会看到这个功能,点击下面的文本显示了你的查询所在网页的实际内容

。。这些只是从事搜索工作的人们每天都在考虑的一些特性。我并不是说这些问题不能通过更传统的DB功能解决,但它们需要您实现代码,保持同步,并且通常,编写大量代码,以获得免费的东西,而这些东西是通过已经为解决问题而开发的技术实现的


性能取决于很多因素,但它可能比OK做得更好。您可以水平扩展大多数解决方案,以便在增长的同时根据需要添加服务器。但是你可能在一段时间内不需要这么做,所以不用担心。早熟优化等。

感谢您的解释,与DB相比,使用seach产品似乎可以免费获得很多,而且您还可以提取这两种产品。我想搜索引擎是专注于他们所做的事情的,正因为如此,在这一点上,除了可能的其他情况外,可能还有一个性能优势。这是一个有趣的话题。我需要根据值进行筛选,而不是在文本块中搜索单词。所以,我想知道在我的情况下使用搜索引擎是否有任何好处。我正在使用的工具推荐Solr,但我无法想象它会比只在查询中添加“WHERE size='XL'”更好。@halfnibble这取决于它。如果您打算执行文档搜索引擎所擅长的任何其他事情(例如facets),它可能仍然是一个好的解决方案。如果只是根据行是否作为特定列中的特定值返回行,则关系DBMS可能会更好地执行此任务(只要将适当的索引添加到表中)