【问题标题】:Want to replace fulltext, and %foo% search with something better (and faster)想用更好(更快)的东西替换全文和 %foo% 搜索
【发布时间】:2010-09-24 19:40:15
【问题描述】:

我有一个网站(内置 php),我在 mysql 表中有大约一百万条记录。有一个非常复杂的“高级”搜索,它允许以数百甚至数千种不同的方式对数据进行搜索、排序和排序。

不幸的是,mysql 搜索不是那么好,而且非常慢。目前平均搜索需要 5 秒,我可以使网站正常运行的唯一方法是缓存一周的所有搜索(目前有超过 110 万个缓存文件仅用于搜索)。我有通过 soundex() 函数实现的“贫民区模糊搜索”。

我想看看我能做些什么来用更快的方法替换基于 mysql 的搜索,并且可以返回准确的结果。我还需要输出完全可换肤,因为结果页面不仅仅是文本,还有图片和复杂的 css。

我查看了 sphinx,但那里没有模糊搜索,我非常想拥有它。

【问题讨论】:

  • 全文搜索是文本搜索的最佳选择。我不清楚您是否在 MySQL 的本机 MATCH AGAINST 语法中使用 WITH QUERY EXPANSION 进行模糊搜索...
  • 它返回了很多完全不相关的数据。有时完全匹配不是#1,我按相关性排序。

标签: php mysql search full-text-search


【解决方案1】:

SQL 不是为您正在执行的查询类型而设计的,当然不是大规模的。我的建议如下:

将所有表索引到Apache Solr 索引中。 Solr 是一个使用 Lucene 构建的 FOSS 搜索服务器,可以在毫秒或更短的时间内轻松查询索引。它几乎支持您需要的任何类型的查询:模糊、通配符、邻近等。

由于 Solr 提供 RESTful (HTTP) API,因此应该可以轻松集成到您使用的任何平台中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2021-06-23
    • 2017-01-29
    • 2016-07-22
    • 2010-10-05
    • 2012-04-15
    相关资源
    最近更新 更多