对于我们的Solr产品搜索,已指定新要求: 需要在某些字段中查询给定的术语列表,并且当它们被发现为短语时,得分应该高于所有术语以不同顺序出现时的得分,并且必须得分高于仅出现的得分单个字段中的某些术语,或者在不同字段中出现的所有字段。此外,一些字段需要比其他字段更高的分数(标题高于描述)。
我想到了这样的解决方案(a,b,c是搜索词,可以是任意数量):
q=title:"a b c"^40.0 or title:(+a +b +c)^20.0 or title:(a b c)^5.0 or description:"a b c"^30.0 or description:(+a +b +c)^10.0 or description:(a b c)^3.0 ...
某些领域需要不同的处理,例如人名应该得分更高,当它们完全匹配时,也应该被模糊搜索,如:
q=name:(+a +b +c)^40.0 or name:(a b c)^20.0 or name (a~0.9 b~0.9 c~0.9)^5.0 etc.
其他标准必须完全匹配以模拟某些限制,例如
active:true and publicationDate[* to now] ...
这是一个有效的解决方案吗?还有更好的吗?
由于我没有使用edismax解析器的实际经验,我不太确定,是否能够解决我的问题。