在我们的网上商店,我想实现一项应该执行以下操作的功能:
如果是用户,例如搜索“手机大图”,将没有结果。
如果没有结果我想让他有可能看到
我不想仅为了获得这些计数而启动多个查询。但目前我不知道如何做到这一点。
我阅读了Solr-wiki的faceting,但没有发现任何对我的问题有用的东西。也许我错过了什么......
答案 0 :(得分:0)
不确定为什么要避免多次查询。如果您对短语"phone magnum"
的第一次搜索未返回任何结果,则您可以针对rows=0
为每个搜索关键字发出一个查询,该查询仅为您提供计数。这应该是有效的,因为您没有构建任何结果文档并且只获得结果计数。
但是,如果您真的想要避免后续查询,那么这里有一个apporach:索引中有一个字段,不考虑IDF。 (请参阅this了解如何执行该操作。)一旦该字段可用(称之为name_no_idf
),请针对此字段name_no_idf:(phone magnum)
发出查询。请注意,这不是短语搜索。
phone
字段中包含magnum
和name_no_idf
的文档得分为2,而只匹配一个字的文档得分为1。查询您添加facet=true&facet.field=name
。然后,你得到的这两个词的分数将是你正在寻找的计数。但很少有警告:
facet.limit