The Solr function query documentation说:
存在(query({!v ='year:2012'}))对于年份= 2012的文档将返回true
我有一个类似的文件:
{
"prod_refExt": [
"1.37.816-nr¤|¤100666¤|¤123596¤|¤5.134.06"
],
"prod_oid": "21956",
"prod_label": "COIN",
"prod_refBrand": [
"1.37.816-nr;;NOREMAT¤|¤100666;;REMPLACEMENT¤|¤123596;;NOREMAT¤|¤5.134.06;;ROUSSEAU"
],
"prod_xrmCategory": [
"0001007b"
],
"prod_code": "123596"
}
prod_refBrand是一个多值字段,我想要做的是:
如果我在其中一个文档中返回“100666 ;; REMPLACEMENT”作为prod_refBrand的完全匹配,我应该只有这个文档。
我发出这样的查询,但是当“if”返回错误值
时,它不会执行我想要的操作q=prod_refBrand:if(exists(query({!v="prod_refBrand:100666;;REMPLACEMENT"})),"100666;;REMPLACEMENT",*)
如何修复查询?
答案 0 :(得分:1)
好吧,我不认为你可以在一个查询中实现这一目标。您可以看到,大多数(如果不是全部)函数每个文档都有效(包括存在和查询),因此对于第一个文档将返回true,对于其他文档将返回false(每个文档的结果不同)。您无法使用此方法更改查询本身。
显而易见的解决方案是发出两个查询:首先检查完全匹配,如果找不到任何内容,请使用完整结果重新查询。