Apache SOLR按类别搜索

时间:2011-04-18 06:48:28

标签: apache solr

我正在使用apache-solr-1.4.1和jdk1.6.0_14。

我有以下情况。 我有SOLR中索引的3类数据,即CITIES,STATES,COUNTRIES。 当我从SOLR查询数据时,我需要根据以下标准从SOLR获得搜索结果:

在SOLR的单个查询中,我需要从SOLR获取的数据按每个类别分组,并为每个类别预定义结果计数。

如何在SOLR中指定此条件?

我曾尝试使用SOLR Field Collapsing功能,但我无法从SOLR获得所需的输出。

请建议。

1 个答案:

答案 0 :(得分:4)

我的解决方案并不完全是您提出的要求,但我对SOLR最擅长的是什么,即全文搜索。我不建议按“类别”对结果进行分组,而是建议您按相关性分数对结果进行排序,同时还提供类别值的方面计数。根据我的经验,用户希望“搜索”的行为与Google一样,最佳匹配位于顶部。在大多数情况下,这种规范的偏差使用户感到困惑。

如果你想要完全按照你的要求(按类别分组的实际结果),那么你可以使用关系数据库并执行group_by或用SOLR编写自定义function query(我不能就此提出建议从来没有这样做过。)

更多信息:使用相应的字段对数据进行索引,例如名称,人口等。但是还要添加一个名为“类别”的字段,其值为CITIES,STATES或COUNTRIES。然后执行标准SOLR搜索,它将按相关性顺序返回结果 - 即顶部的最佳匹配。作为请求的一部分,您可以指定facet.field=category,它将返回每个给定类别的搜索结果的计数(在“构面”结果部分中)。然后,您可以在UI中为每个类别构面创建链接,这些链接执行原始搜索以及&fq=category:CITIES等,从而将结果限制为该类别。有关详细信息,请参阅SOLR wiki上的facetting overview