我正在以编程方式在我的 Drupal 模块中构建一个 apachesolr 查询,并且在某些方面取得了成功,但仍在与其他方面苦苦挣扎。
到目前为止,我已经能够构建一个可以搜索特定文本并根据要使用以下代码过滤的术语限制结果的查询:
$subquery_region->addFilter('tid', $term->tid);
$query->addFilterSubQuery($subquery_region, 'OR', 'AND');
接下来我想要实现的是能够通过添加一个过滤器来进一步缩小搜索范围,以在节点的特定字段中查找特定文本。有没有人能够做到这一点。
我一直在网上研究并尝试了很多不同的方法,例如将过滤器直接添加到主要搜索查询中
$query->addParam('fl', 'ss_my_field');
$query->addFilter("ss_my_field", "field_substring_to_search_for");
以及将其分解为子查询以添加到主搜索查询中
$subquery_test = apachesolr_drupal_query("Test");
$subquery_test->addParam('fl', 'ss_my_field');
$subquery_test->addFilter("ss_my_field", "field_substring_to_search_for");
$query->addFilterSubQuery($subquery_test, 'OR', 'AND');
但这些都不起作用。他们返回一个空集,即使我知道子字符串存在于我作为过滤器添加的字段中并且它已被索引。我已经通过 apachesorl 视图模块验证了搜索索引已经填充了该字段并且可以看到子字符串存在。
我的语法或构建查询的方式有什么问题吗?
如果您知道如何添加过滤器以在特定字段中搜索文本,请分享!它甚至可能无法使用 addFilter 函数完成,但这就是我迄今为止一直在尝试的所有内容。谢谢!