使用 Solr/Lucene 搜索非文本表?

alf*_*onx 4 full-text-search feature-comparison postgresql-9.1

我正在创建一个 Web 应用程序来检索一个大(4m 行)表的子集。400 万行每年仅更改一次。该表有 200 多列布尔型和数字型。它没有文本列。

用户将查询此表的子集以供下载。

我对PostgreSQL 9.1数据库比较熟悉,我的计划是:

  • webapp 将帮助用户创建查询,如“WHERE a=3 AND b=true AND c>300”
  • 数据库将为最常用的列提供适当的索引。

现在..我在这里阅读: https : //stackoverflow.com/questions/10053050/why-is-solr-so-much-faster-than-postgres

我最近从 Postgres 切换到 Solr,发现查询速度提高了约 50 倍。我们运行的查询涉及多个范围,我们的数据是车辆列表。例如:“查找所有里程 < 50,000, $5,000 < price < $10,000, make=Mazda...”

所以现在我想知道:即使不涉及全文搜索,Solr、Lucene、ElasticSearch、Amazon Cloud Search 搜索是否会比 PostgreSQL 更快?

Mar*_*ith 9

即使不涉及全文搜索,Solr/Lucene 搜索是否会比 PostgreSQL 更快?

是的。根据您引用的示例,对于某些用例,它可能比关系数据库快许多倍。真的不奇怪。

Solr是一个搜索引擎。PostgreSQL是一个关系数据库引擎。

Solr是从头开始构建的,只为做好一件事,即搜索。它不能完成事务数据库系统的工作。Solr不能保证 ACID 合规性,它不能有效地管理并发,它不是 OLTP 工作负载的可行候选者。

PostgreSQL从头开始构建以做好一件事,即事务处理。它还可以合理地提供搜索类型的功能,但这不是它的主要作用。它确实保证了 ACID 合规性,它管理并发性,它不是一个搜索引擎。

400 万行每年仅更改一次。

在这种情况下,您可能不需要关系数据库引擎的关键功能。

你需要一个搜索引擎。可能是SolrLuceneElasticSearchAmazon Cloud Search或其他几十个搜索平台之一,但首先,它将是一个搜索平台,而不是关系数据库。