2011-04-18 169 views
1

我正在使用apache-solr-1.4.1和jdk1.6.0_14。Apache SOLR按类别搜索

我有以下情况。 我有3类数据索引在SOLR,即城市,州,国家。 当我从SOLR查询数据时,我需要SOLR的搜索结果根据以下标准:

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

如何在SOLR中指定此条件?

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

请建议。

回答

3

我的解决方案并不完全符合您的要求,但是我认为SOLR最擅长的是全文搜索。我不建议按“类别”对结果进行分组,而是建议您按相关性分数对结果进行排序,但也会为类别值提供方面计数。根据我的经验,用户期望“搜索”的行为与Google相似,最高匹配度最高。在大多数情况下,偏离这种规范会使用户感到困惑。

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

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

+0

我同意@nickdos,你应该利用Solr中的faceting来实现你想要的结果。 – 2011-04-18 12:22:24