假设有一个包含“作者”字段的书籍列表。作者字段的某一方面如何将“Stephen King”和“Richard Bachman”的值视为相同?从而得到这些结果:
- 海明威:8
- 斯蒂芬·金:10
- 埃德加·爱伦·坡:20
- 理查德·巴赫曼:5
将显示为:
- 海明威:8
- 斯蒂芬·金:15
- 埃德加·爱伦·坡:20
请注意,分面标题是否为“Stephen King”、“Richard Bachman”或其他名称并不重要。唯一重要的是它们是多面的。
请注意,需要查询时解决方案。不幸的是,这个索引的架构无法更改,它是一个通用索引,如果每个用户都可以“调整”自己的架构,那么它就会失控。
最佳答案
您可以通过将构面字段与构面查询相结合来实现这一点。
将这些添加到您的查询中:
&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.query=author:("Hemmingway" OR "Stephen King")
至
&facet.query={!ex=dt key="Hemmingway"}author:("Hemmingway" OR "Stephen King")
构面查询输出将是:
facet_queries: {
"Hemmingway" : 18
}
我不确定是否可以合并来自 Solr 的两个输出字段(facet_queries 和facet_fields),但从任何客户端执行此操作应该是简单的。
关于solr - 将两个方面视为相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15433968/