我正在使用php solr扩展以及如何在solr中进行搜索,如下所示:
$dismaxQuery = new SolrDisMaxQuery($search);
$dismaxQuery
->addQueryField("fundraise_title", 10)
->addQueryField("fundraiser_display_name", 10)
->setPhraseFields("fundraiseTitleExact~2^10 fundraiserDisplayNameExact~2^10");
返回以下响应头:
[params] => SolrObject Object
(
[pf] => fundraiseTitleExact~2^10 fundraiserDisplayNameExact~2^10
[fl] => frpId,fundraise_title
[indent] => on
[q] => The Nest
[qf] => fundraise_title^10 fundraiser_display_name^10
[wt] => xml
[hl] => true
[defType] => edismax
[version] => 2.2
)
但在进行搜索时,似乎只在qf查询上进行搜索,并忽略pf查询;任何想法如何使这项工作在一起?
solr输入:
params={pf=fundraiseTitleExact~2^10+fundraiserDisplayNameExact~2^10&fl=frpId,fundraise_title&indent=on&q=The+Nest&qf=fundraise_title^10+fundraiser_display_name^10&wt=xml&hl=true&defType=edismax&version=2.2}
答案 0 :(得分:0)
这是正常和预期的行为:
qf 是一个查询字段,这意味着这些字段用于搜索它们。
pf是一个词组字段,只会提升您从 qf 获得的结果,这就是为什么您可能会认为它们会被忽略的原因。
来自 Solr 文档:
pf(短语字段)参数。一旦匹配文件列表 已使用fq和qf参数,pf参数识别 可以用来提升"所有案件中的文件分数 q参数中的术语非常接近。格式是 与qf参数使用的相同:字段列表和 "提升"在制作短语查询时与每个人联系 整个q参数。