我正在使用apache-solr-1.4.1和jdk1.6.0_14。Apache SOLR按类别搜索
我有以下情况。 我有3类数据索引在SOLR,即城市,州,国家。 当我从SOLR查询数据时,我需要SOLR的搜索结果根据以下标准:
在对SOLR的单个查询中,我需要从SOLR中获取的数据按每个类别分组,每个类别都有一个预定义的结果计数。
如何在SOLR中指定此条件?
我试过使用SOLR Field Collapsing功能,但我无法从SOLR获得所需的输出。
请建议。
我正在使用apache-solr-1.4.1和jdk1.6.0_14。Apache SOLR按类别搜索
我有以下情况。 我有3类数据索引在SOLR,即城市,州,国家。 当我从SOLR查询数据时,我需要SOLR的搜索结果根据以下标准:
在对SOLR的单个查询中,我需要从SOLR中获取的数据按每个类别分组,每个类别都有一个预定义的结果计数。
如何在SOLR中指定此条件?
我试过使用SOLR Field Collapsing功能,但我无法从SOLR获得所需的输出。
请建议。
我的解决方案并不完全符合您的要求,但是我认为SOLR最擅长的是全文搜索。我不建议按“类别”对结果进行分组,而是建议您按相关性分数对结果进行排序,但也会为类别值提供方面计数。根据我的经验,用户期望“搜索”的行为与Google相似,最高匹配度最高。在大多数情况下,偏离这种规范会使用户感到困惑。
如果你想完全按照你的要求(实际结果按类别分组),那么你可以使用关系数据库,并做一个group_by或写一个自定义的function query与SOLR(我不能建议,因为我从来没有这样做过)。
更多信息:使用适当的字段(例如,名称,人口等等,但还要添加一个名为“类别”的字段,该字段将具有CITIES,STATES或COUNTRIES的值。然后执行标准的SOLR搜索,该搜索将按照相关性的顺序返回结果 - 即顶部的最佳匹配。作为请求的一部分,您可以指定一个facet.field=category
,它将返回每个给定类别(在“构面”结果部分中)的搜索结果的计数。然后在用户界面中,您可以为每个执行原始搜索的类别构面创建链接,并加上&fq=category:CITIES
等,从而将结果限制为仅限该类别。请参阅SOLR wiki上的facetting overview以获取更多信息。
我同意@nickdos,你应该利用Solr中的faceting来实现你想要的结果。 – 2011-04-18 12:22:24