我正在尝试对多个字段执行solr dismax查询,并且与语法有点混淆。
我的核心包含一大堆播客剧集。索引中的字段是EPISODE_ID,EPISODE_TITLE,EPISODE_DESC和EPISODE_KEYWORDS。
现在,当我进行查询时,我想在EPISODE_TITLE,EPISODE_DESC和EPISODE_KEYWORDS字段中搜索查询字词,并为不同的字段提供不同的提升。
因此,当我搜索' jedi'时,我构建的查询如下所示:
http://localhost:8983/solr/episode_core/select?
&defType=dismax&q=jedi&fl=EPISODE_ID,EPISODE_TITLE,EPISODE_DESC,EPISODE_KEYWORDS
&qf=EPISODE_TITLE^3.0+EPISODE_DESC^2.0+EPISODE_KEYWORDS
然而,这似乎不起作用 - 它返回零记录。
当我输入如下所示的默认字段时,它现在有效,但这是一种废话,因为这意味着我没有从搜索所有3个字段中获得结果:
http://localhost:8983/solr/episode_core/select?&df=EPISODE_DESC
&defType=dismax&q=jedi&fl=EPISODE_ID,EPISODE_TITLE,EPISODE_DESC,EPISODE_KEYWORDS
&qf=EPISODE_TITLE^3.0+EPISODE_DESC^2.0+EPISODE_KEYWORDS
我在这里缺少什么吗?我以为你可以在多个领域进行搜索,而且我认为这是一个很好的选择。参数意味着您不需要提供默认字段参数?
所有人都非常感谢...
答案 0 :(得分:1)
你的想法是正确的。如果您为Dismax定义了 qf (查询字段),则不需要指定 df (默认字段)。
你能更具体地说明什么不起作用吗?
此外,请阅读solrconfig.xml
中的Configuration Invariants,因为您的配置可能会发送一些与您在网址中指定的参数不同的参数。
(例如,如果您看到一条要求您提供 df 的特定错误消息)