1

目前 SQL '%like%' 搜索用于获取包含某些关键字的所有行。我们正在尝试用 Lucene-Solr 替换 MySQL 之类的搜索。

我们构建了索引,

  1. 用关键字查询到 solr,
  2. 检索所有相应记录的主键,
  3. 用PK查询到mysql
  4. 并获取结果。

它变慢了。该死!

我认为 1、2、3 中使用的带宽是原因(因为结果非常大,比如 100 万+),但我想不出更好的方法。

除了 CSV over http,还有其他方法可以获取 solr 搜索结果吗?(如 mysql 中的文件转储)

4

3 回答 3

0

我们做了同样的过程来结合 solr 和 mysql,它比单个 mySql 全文搜索快 100-1000 倍。

因此,您的工作流程/程序通常不是问题。问题是:你的瓶颈在哪里。要对此进行调查,您应该查看 catalina 以查看每个 solr 请求的查询时间。在 MySQL 上也一样 - 看看查询时间/长时间运行的查询。

我们遇到了性能问题,因为返回的 PK 数量非常大 -> 因此 mySQL 查询非常大,因为where in ()子句非常长。

随后是一个非常大的 MySQL 语句,其中许多行返回 200-1.000.000+

但关键是,应用程序/用户不需要一次这么大的约会。所以我们决定使用分页和偏移(在 solr 方面)。Solr 现在只返回 30-50 个结果(取决于用户应用程序环境的分页设置)。

这工作得非常快。

//编辑:除了 CSV over http,还有其他方法可以获取 solr 搜索结果吗?

有不同的格式,例如 XML、PHP、CSV、Python、Ruby 和 JSON。要更改这一点,您可以使用wt参数,例如....&wt=json

http://wiki.apache.org/solr/CoreQueryParameters#wt

http://wiki.apache.org/solr/QueryResponseWriter

//编辑#2

另一种方法可能不仅仅是将数据索引到 solr。您可以(额外)将数据存储到 solr,以便从 solr 获取数据并且无需 MySQL 数据即可生存。这取决于你的数据,如果这对你来说是一种方式......

于 2013-01-04T10:18:04.203 回答
0

您不能将所有 MySQL 数据库检索到 Solr 吗?

您可以使用DIH(数据导入处理程序)从 MySQL 检索所有数据并非常容易地添加到 Solr。

然后,您将在一个地方获得所需的所有信息,我认为您将获得更好的性能。

于 2013-01-04T10:48:14.950 回答
0

Solr 提供了一种将结果导出为CSVJSON
的方法, 100 万+ 仍然是一个非常大的集合。您总是可以分批进行。

于 2013-01-04T10:15:57.477 回答