0

我必须在 solr 中索引大约 1000 万个文档以进行全文搜索。这些文档中的每一个都有大约 25 个附加的元数据字段。每个元数据字段都很小(最多 64 个字符)。常见查询将涉及搜索词以及用于过滤数据的多个元数据字段。所以我的问题是哪个可以提供更好的搜索响应时间。(索引时间不是问题):

一个。索引文本数据并将所有元数据字段作为存储字段推送到 solr 中,并使用单个查询查询所有字段的 solr。(有效地 solr 使用元数据进行过滤以及搜索)

湾。将元数据字段存储在像 Mysql 这样的数据库中。仅对全文使用 solr,然后使用从 solr 返回的文档 ID 作为数据库的输入,根据其他元数据进行过滤,以检索最终的文档集。

谢谢阿里吉特

4

2 回答 2

2

绝对是 a)。Solr 不仅仅是一个全文搜索引擎,它还有更多。它的过滤器查询至少与 MySQL select 一样好/快。

b) 只是愚蠢的。通过选择具有正确元数据的 ID 从 MySQL 中获取许多 id,在 Solr 中进行全文搜索,同时针对该 id 列表进行过滤,从 MySQL 或 Solr 中获取文档(如果您选择在其中存储数据,而不仅仅是索引)。我无法想象这会更快的情况。

于 2012-08-11T15:51:21.113 回答
0

为什么要把事情复杂化,特别是如果索引时间和 HD 空间不是问题,您应该将所有数据(即:用户所需的子集)存储在 Solr 中。

例外情况是,如果您在每个文档中存储(和检索)大量文本。在这些情况下,在您获取搜索结果后从 RDB 中获取它会更快。无论如何,没有人能确定在你的情况下哪一个会更快,所以我建议你测试这两种方法的性能(例如使用 JMeter)。

此外,由于您不关心索引时间,因此您应该在索引时间而不是在查询时间进行所有处理(例如,同义词,它们可以替换提升的有效负载,...)。

有关 Solr 性能的更多信息,请参见此处:

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

于 2012-08-11T22:20:28.593 回答