【问题标题】:Solr filtering facets by valueSolr 按值过滤构面
【发布时间】:2017-03-17 15:00:04
【问题描述】:

我有一个书籍数据库,每本书都附有一个主题列表。我想构建一个查询,以便当用户搜索主题时,Solr 返回按字母顺序跟随查询的主题列表。例如,如果用户要查询“鲸鱼”,那么我希望 Solr 返回主题列表“鲸鱼狩猎”、“鲸鱼”、“小麦”等。我只对聚合感兴趣主题,不在与查询匹配的项目中。

但是,存在一个问题,即一本书可以有多个主题。如果文档有主题“arctic”和“whale”,则查询“whale”与“whale”匹配,但“arctic”也会出现在我的方面,这是我不想要的。我想避免解析所有结果,因为这可能是一项昂贵的操作。

对此最好的解决方案是什么?有没有办法告诉 Solr 只返回方面是 [whale* TO *] 的方面?或者我可以构建我的查询,以便它只考虑匹配的主题是方面的一部分?

我已经查看并修改了 JSON 请求 API,这似乎是解决方案,但我无法让各种过滤器等工作。

【问题讨论】:

    标签: solr facet


    【解决方案1】:

    facet.prefix 参数

    facet.prefix 参数将要分面的术语限制为那些 从给定的字符串前缀开始。这不限制查询 无论如何,只有响应于 询问。该参数可以在每个字段的基础上使用 f..facet.prefix 的语法。

    [示例]

    facet.prefix=whales
    

    这将只返回那些包含 whales 作为前缀的主题。

    还有另一个参数 facet.contains 限制了要分面的术语那些包含给定子字符串的。

    P.S :- 以上参数不以任何方式限制查询,仅限制响应查询返回的方面。

    【讨论】:

    • 啊,我看到了 facet.prefix 参数,它在大多数情况下都可以工作,但不幸的是我需要一个按字母顺序排列的列表。如果我将前缀设置为“鲸鱼”,它将返回“鲸鱼”而不是“小麦”。我需要一些比这更灵活的东西。不过感谢您的想法!
    猜你喜欢
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多