我应该只查询数据库或使用适当的搜索引擎解决方案?

时间:2014-08-02 19:07:42

标签: database search solr

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

该网站可能会或可能不会获得大量流量,但我必须实施专为交通网站设计的搜索功能。

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

1 个答案:

答案 0 :(得分:4)

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

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

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

期限和字段权重:如果您在"标题"中匹配,则其权重应该比" text"中的匹配更重要。但是你也可能有一个"故乡"因素会影响分数,因此根据用例,可以调整字段和功能之间的所有权重,以解决几乎所有问题。

文本规范化和处理:您可能希望在编制索引时展开同义词。搜索ipod和i-pod应该会得到相同的结果。 Windows和窗口也是如此。这些操作是大多数文档搜索引擎的基础。您可能希望允许字段执行语音匹配(单词的发音而不是其书面形式),并且您可能希望得到与完全匹配不同的分数。 Solr's list of analyzers, tokenizers and filters可能会让您了解文本处理的一些可用功能。

Faceting / Navigators :我的搜索中有多少文档在字段xyz中有不同的值,它们的数量是多少?您可能已在许多网站上看到此功能,例如"按文件类型过滤","仅显示过去7天,过去31天,过去365天和#34;等,以及每个垃圾箱的文件数量。

突出显示:文本的哪一部分匹配,并提取一个正确的代码段,我可以将其返回给最终用户进行展示。每次进行Google搜索时,您都会看到此功能,点击下方的文字会显示查找您的查询的网页中的实际内容。

..这些只是使用搜索的人每天都在考虑的一些功能。我并不是说这些都不能通过更传统的数据库功能来解决,但它们要求您实现代码,保持内容同步,一般情况下,编写大量代码来获取您的内容。 d使用已经解决问题的技术免费获得。

性能取决于很多因素,但它可能比OK更好。您可以水平扩展大多数解决方案,因此您可以在增长时根据需要添加服务器。但是你可能暂时不会这样做,所以不用担心。过早优化等。