已关闭。此问题需要更多的focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
12个月前关闭。
Improve this question
我正在准备我的文凭考试,题目是Apache SOLR中的全文搜索。在介绍中,我应该详细说明Apache SOLR的目的和优势,例如,为什么人们会选择像SOLR这样的全文搜索引擎而不是MySQL。使用像“SOLR在行动”这样的文献(2013)”在那个时代,很容易决定何时使用SOLR、ElasticSearch或其他搜索引擎,而不是MySQL。2010年的SO:Comparison of full text search engine - Lucene, Sphinx, Postgresql, MySQL?。唉,尽管它在2010年左右很棒,但现在的答案似乎已经过时了。例如,“MySQL MyISAM表类型支持全文搜索,但InnoDB不支持”。几年后,InnoDB也添加了全文搜索支持。现在,有一些文章设法阐明了这一点,如https://lucidworks.com/post/full-text-search-engines-vs-dbms/,它指出全文搜索系统的优点是
搜索速度、各种索引和查询选项、排名和相关性功能......
然而,还有很多其他文章说,
MySQL全文搜索现在可以满足您80%的需求
在过去的10年里,MySql,MongoDB,PostgreSQL等关系数据库的全文检索能力有了很大的提高。
然而,https://db-engines.com/en/ranking_trend/system/Elasticsearch%3BMySQL%3BSolr上的图表显示,全文搜索引擎并没有失去流行,但它们的使用率正在增长,甚至SOLR也在稳步下降,现在似乎正在苏醒。
所以,一定有什么原因?是不是:
- SOLR、Elastic、Sphinx......仍然比它们的关系型对应物快得多吗?
- 有更多的选择,像高级的,可定制的标记化,分面?2也许更好的语言支持?
- 关系数据库不能很好地处理对大量文档的搜索?
等等。
简而言之,现在是什么让你选择Apache SOLR或Elastic,而不是MySQL或其他具有增强的全文搜索功能的关系数据库?如果你已经在关系数据库或NoSQL数据库中有数据,那么当使用它们需要另一堆资源和管理时,为什么Apache SOLR和Elastic Search仍然那么受欢迎?
所以中心问题是:如果我的系统使用MySQL数据库进行数据存储,并且我需要为一个或多个字段添加全文搜索功能,以包括模糊搜索(排印错误)、同义词、词干、以自定义方式处理相关性和排名,通常使用MySQL FTS是否更好(因此不需要另一堆资源和管理)或者像ApacheSOLR或Elastic search这样的专用全文搜索引擎在这方面做得更好?
1条答案
按热度按时间bgtovc5b1#
专门的索引解决方案,如Apache Solr、ElasticSearch、Sphinx Search通常比MySQL的内置全文索引或PostreSQL的GIST等更快。专门的解决方案通常具有更多的功能,如词干提取、更复杂的搜索(包括分面),以及在与索引文本相关的“文档”中存储额外数据。
另一方面,使用这些补充解决方案中的一个意味着将数据复制到索引解决方案中会带来额外的复杂性。您需要多长时间更新一次索引?增量更新索引效率高吗?还是基本上需要彻底删除索引并从整个数据集创建一个新的索引?
然而,使用RDBMS的内置索引功能的优势在于,索引可能会自动与最近的数据更新保持同步。而且搜索功能可能足以满足您的需要。保持索引维护简单和自动化有很多积极的价值。
除此之外,任何一种解决方案,即使是次优的解决方案,都比许多开发人员使用的简单方法好几个数量级:
textcolumn LIKE '%keyword%'
现在,是什么促使您采用Apache SOLR或Elastic,而不是MySQL或其他具有增强全文搜索功能的关系数据库?
更好的性能,更复杂的搜索支持,它有助于将那些昂贵的搜索查询转移到一个专用的搜索引擎,并减轻您的RDBMS的负载。