Performance 具有多个字段的Solr性能

Performance 具有多个字段的Solr性能,performance,solr,field,Performance,Solr,Field,我必须在solr中索引大约1000万个文档以进行全文搜索。每个文档都附加了大约25个额外的元数据字段。每个元数据字段都很小(最多64个字符)。常见的查询将涉及一个搜索词以及用于过滤数据的多个元数据字段。所以,我的问题是,哪一个会提供更好的性能wrt搜索响应时间。(索引时间不是一个问题): a。索引文本数据,并将所有元数据字段作为存储字段推送到solr中,并使用单个查询查询所有字段的solr。(solr有效地利用元数据和搜索进行过滤) b。将元数据字段存储在类似Mysql的数据库中。仅对全文使用s

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

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

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

谢谢 Arijit

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


b) 这太傻了。通过选择元数据正确的ID,从MySQL获取多个ID,在Solr中进行全文搜索,同时根据ID列表进行过滤,从MySQL或Solr中获取文档(如果您选择在其中存储数据,而不仅仅是索引)。我无法想象这种情况会更快。

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

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

此外,因为您不关心索引时间,所以您应该在索引时间而不是在查询时间(例如同义词、有效负载,它们可以替代boosting等)进行所有处理

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