【发布时间】:2010-09-23 02:14:51
【问题描述】:
我们有一个托管应用程序来管理内容页面。每个页面可以有许多自定义字段,以及一些标准字段(时间戳、用户名、用户电子邮件等)。
可能有数百个不同的网站在使用该系统——处理过滤/搜索的有效方法是什么?想象一个您想要缩小范围的网格视图。您可以过滤特定字段(用户 ID、日期),也可以输入全文搜索。
例如,“所有由 userid 10 开始的页面”将是对 MySQL 数据库的非常快速的查询。但是诸如“用户 ID 为 10 且匹配 [某些搜索查询] 的用户启动的所有页面”之类的内容会影响数据库,因此它适合 Lucene 之类的搜索引擎。
基本上我想知道其他大型网站是如何做这种事情的。他们是否 100% 使用搜索引擎进行所有类型的过滤?他们是否将数据库查询与搜索引擎混合在一起?
如果我们仅使用搜索引擎,则会出现新/更新对象出现在搜索索引中的延迟时间问题。也就是说,我读到立即更新索引并不明智,而是分批进行。即使这意味着每 5 分钟一次,当用户查看一个简单的页面列表(比如搜索查询“category:5”)时,如果他们最近添加的页面没有立即列出,他们也会感到困惑。
我们正在使用 MySQL,并且一直在密切关注 Lucene 进行搜索。还有其他我不知道的技术吗?
我的想法是提供一个简单的过滤页面,它使用 MySQL 来过滤基本字段。然后提供一个单独的全文搜索页面,该页面将显示类似于 Google 的结果。这是唯一的方法吗?
【问题讨论】:
标签: mysql search lucene filtering saas