首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将两个方面视为相同的值。

将两个方面视为相同的值。
EN

Stack Overflow用户
提问于 2013-03-15 13:41:47
回答 3查看 513关注 0票数 2

假设有一个作者字段的书籍列表。如何看待作者领域的一个方面,却把“斯蒂芬·金”和“理查德·巴赫曼”的价值观视为相同?因此,这些结果:

  • 海明威:8
  • 斯蒂芬·金: 10
  • 埃德加·爱伦·坡: 20岁
  • 理查德·巴赫曼:5

将显示为:

  • 海明威:8
  • 斯蒂芬·金: 15
  • 埃德加·爱伦·坡: 20岁

请注意,如果小面标题是"Stephen“、"Richard”或其他什么,这是不重要的。重要的是,它们必须是分面的。

请注意,需要查询时解决方案。不幸的是,不能为这个索引更改模式,它是一个通用的索引,如果每个用户都可以对自己的模式进行“调整”,那么它就会失控。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-05 11:11:38

您可以通过将facet字段与facet查询相结合来实现这一点。

将这些添加到查询中:

代码语言:javascript
运行
复制
&facet=true
&facet.field=author
&facet.query=author:("Hemmingway" OR "Stephen King")

返回的方面如下所示:

代码语言:javascript
运行
复制
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查询添加一个“别名”。改变这个

代码语言:javascript
运行
复制
&facet.query=author:("Hemmingway" OR "Stephen King")

代码语言:javascript
运行
复制
&facet.query={!ex=dt key="Hemmingway"}author:("Hemmingway" OR "Stephen King")

而facet查询输出将是:

代码语言:javascript
运行
复制
    facet_queries: {
       "Hemmingway" : 18
    }

我不确定是否可以从Solr合并两个输出字段(facet_queries和facet_fields),但是从任何客户端这样做都应该是直接的。

票数 3
EN

Stack Overflow用户

发布于 2013-03-15 13:52:47

您需要一个转换字符串的分析链。如果您在索引时和查询时应用它,我认为SynonymFilter会帮您做到这一点的。您需要确保sysnonym映射只以一种方式进行。

票数 1
EN

Stack Overflow用户

发布于 2013-04-10 09:49:48

我假设您不需要所有方面的列表,只需要前n位作者。如果是这样的话,您可以在后处理步骤中这样做。

您知道您的同义词,如果您将facet.limit稍微高一点(例如2*n),那么您只需从结果集中筛选出同义词。如果最后得到了

前.&facet=true&facet.field=author&facet.limit=100&facet.mincount=1

这个问题与Solr无关,但考虑到所有的限制,它可能只会削减它。

诚挚的问候,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15433968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档