假设有一个作者字段的书籍列表。如何看待作者领域的一个方面,却把“斯蒂芬·金”和“理查德·巴赫曼”的价值观视为相同?因此,这些结果:
将显示为:
请注意,如果小面标题是"Stephen“、"Richard”或其他什么,这是不重要的。重要的是,它们必须是分面的。
请注意,需要查询时解决方案。不幸的是,不能为这个索引更改模式,它是一个通用的索引,如果每个用户都可以对自己的模式进行“调整”,那么它就会失控。
发布于 2013-04-05 11:11:38
您可以通过将facet字段与facet查询相结合来实现这一点。
将这些添加到查询中:
&facet=true
&facet.field=author
&facet.query=author:("Hemmingway" OR "Stephen King")
返回的方面如下所示:
facet_counts: {
facet_queries: {
"author:("Hemmingway" OR "Stephen King")" : 18
}
facet_fields: {
author: {
"Hemmingway" : 8,
"Stephen King" : 10,
"Edgar Allan Poe" : 20,
"Richard Bachman" : 5
}
}
}
您还可以向facet查询添加一个“别名”。改变这个
&facet.query=author:("Hemmingway" OR "Stephen King")
至
&facet.query={!ex=dt key="Hemmingway"}author:("Hemmingway" OR "Stephen King")
而facet查询输出将是:
facet_queries: {
"Hemmingway" : 18
}
我不确定是否可以从Solr合并两个输出字段(facet_queries和facet_fields),但是从任何客户端这样做都应该是直接的。
发布于 2013-03-15 13:52:47
您需要一个转换字符串的分析链。如果您在索引时和查询时应用它,我认为SynonymFilter会帮您做到这一点的。您需要确保sysnonym映射只以一种方式进行。
发布于 2013-04-10 09:49:48
我假设您不需要所有方面的列表,只需要前n位作者。如果是这样的话,您可以在后处理步骤中这样做。
您知道您的同义词,如果您将facet.limit稍微高一点(例如2*n),那么您只需从结果集中筛选出同义词。如果最后得到了
前.&facet=true&facet.field=author&facet.limit=100&facet.mincount=1
这个问题与Solr无关,但考虑到所有的限制,它可能只会削减它。
诚挚的问候,
https://stackoverflow.com/questions/15433968
复制相似问题