Solr按值过滤面

Solr按值过滤面,solr,facet,Solr,Facet,我有一个书库,每个书库都附有一个主题列表。我想构建一个查询,这样当用户搜索主题时,Solr会返回一个按照查询字母顺序排列的主题列表。例如,如果用户要进行“鲸鱼”查询,那么我希望Solr返回主题列表“捕鲸”、“鲸鱼”、“小麦”等。我只对主题的聚合感兴趣,而不是对匹配查询的项目感兴趣 然而,有一个问题是一本书可以有多个主题。如果文档的主题是“北极”和“鲸鱼”,那么查询“鲸鱼”与“鲸鱼”匹配,但“北极”也出现在我的切面中,这是我不想要的。我希望避免解析所有结果,因为这是一个潜在的昂贵操作 最好的解决方

我有一个书库,每个书库都附有一个主题列表。我想构建一个查询,这样当用户搜索主题时,Solr会返回一个按照查询字母顺序排列的主题列表。例如,如果用户要进行“鲸鱼”查询,那么我希望Solr返回主题列表“捕鲸”、“鲸鱼”、“小麦”等。我只对主题的聚合感兴趣,而不是对匹配查询的项目感兴趣

然而,有一个问题是一本书可以有多个主题。如果文档的主题是“北极”和“鲸鱼”,那么查询“鲸鱼”与“鲸鱼”匹配,但“北极”也出现在我的切面中,这是我不想要的。我希望避免解析所有结果,因为这是一个潜在的昂贵操作

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

我已经看过JSON请求API并对其进行了一些修改,看起来它可能是解决方案,但我在让各种过滤器等正常工作时遇到了问题。

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

[示例]

facet.prefix=whales
这将只返回那些包含鲸鱼的主题作为前缀。

还有另一个参数facet。contains将刻面的术语限制为包含给定子字符串的术语


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

啊,我看到了facet.prefix参数,它在大部分情况下都有效,但不幸的是,我需要一个按字母顺序排列的列表。如果我将前缀设置为“whale”,它将返回“whales”,但不返回“小麦”。我需要比这更灵活的东西。谢谢你的主意!