Skip to content

Commit d648e04

Browse files
committed
Feature (php#28): Add SolrQuery::setHighlightQuery(string )
1 parent 8bb73f7 commit d648e04

7 files changed

+67
-6
lines changed

NEWS

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
- Add SolrQuery SolrQuery::setHighlightQuery(string $q) (#28)
12
- Fix compile error: libcurl on linux multiarch support (#46)
23
- Fix SegFault in SolrClient::optimize() (debug mode)
34
- Fix parsed parameter types (#37)

docs/documentation.php

+11-2
Original file line numberDiff line numberDiff line change
@@ -2182,6 +2182,15 @@ public function setFacetSort($facetSort, $field_override = null) {}
21822182
* @link http://docs.php.net/manual/en/solrquery.sethighlight.php
21832183
*/
21842184
public function setHighlight($flag) {}
2185+
2186+
/**
2187+
* A query to use for highlighting. This parameter allows you to highlight different terms than those being used to retrieve documents.
2188+
*
2189+
* @param string $q
2190+
* @return SolrQuery
2191+
* @link http://docs.php.net/manual/en/solrquery.sethighlightquery.php
2192+
*/
2193+
public function setHighlightQuery($q) {}
21852194

21862195
/**
21872196
* Specifies the highlithing backup field to use
@@ -2431,11 +2440,11 @@ public function setOmitHeader($flag) {}
24312440
/**
24322441
* Sets the search query
24332442
*
2434-
* @param string $query
2443+
* @param string $q
24352444
* @return SolrQuery Returns the current SolrQuery object
24362445
* @link http://docs.php.net/manual/en/solrquery.setquery.php
24372446
*/
2438-
public function setQuery($query) {}
2447+
public function setQuery($q) {}
24392448

24402449
/**
24412450
* Specifies the maximum number of rows to return in the result

examples/solrquery_004_highlight.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
$query = new SolrQuery();
44

5-
$query->setHighlight(0);
5+
$query->setHighlight(true);
6+
7+
$query->setHighlightQuery('title:PHP OR description:Solr');
68

79
$query->addHighlightField('a')->addHighlightField('a')->addHighlightField('a');
810

src/php7/php_solr.c

+2
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,8 @@ static zend_function_entry solr_query_methods[] = {
959959
/* HighlightingParameters */
960960
PHP_ME(SolrQuery, setHighlight, SolrQuery_hl_1_1_args, ZEND_ACC_PUBLIC)
961961
PHP_ME(SolrQuery, getHighlight, Solr_no_args, ZEND_ACC_PUBLIC)
962+
PHP_ME(SolrQuery, setHighlightQuery, SolrQuery_setQuery_args, ZEND_ACC_PUBLIC)
963+
PHP_ME(SolrQuery, getHighlightQuery, Solr_no_args, ZEND_ACC_PUBLIC)
962964
PHP_ME(SolrQuery, addHighlightField, SolrQuery_hl_1_1_args, ZEND_ACC_PUBLIC)
963965
PHP_ME(SolrQuery, removeHighlightField, SolrQuery_hl_1_1_args, ZEND_ACC_PUBLIC)
964966
PHP_ME(SolrQuery, getHighlightFields, Solr_no_args, ZEND_ACC_PUBLIC)

src/php7/php_solr.h

+2
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,8 @@ PHP_METHOD(SolrQuery, getExpandFilterQueries);
431431
/* HighlightingParameters */
432432
PHP_METHOD(SolrQuery, setHighlight);
433433
PHP_METHOD(SolrQuery, getHighlight);
434+
PHP_METHOD(SolrQuery, setHighlightQuery);
435+
PHP_METHOD(SolrQuery, getHighlightQuery);
434436
PHP_METHOD(SolrQuery, addHighlightField);
435437
PHP_METHOD(SolrQuery, removeHighlightField);
436438
PHP_METHOD(SolrQuery, getHighlightFields);

src/php7/php_solr_query.c

+42
Original file line numberDiff line numberDiff line change
@@ -2169,6 +2169,31 @@ PHP_METHOD(SolrQuery, setHighlight)
21692169
}
21702170
/* }}} */
21712171

2172+
/* {{{ proto SolrQuery SolrQuery::setHighlightQuery(string q)
2173+
Sets the hl.q parameter */
2174+
PHP_METHOD(SolrQuery, setHighlightQuery)
2175+
{
2176+
solr_char_t *param_name = (solr_char_t *) "hl.q";
2177+
COMPAT_ARG_SIZE_T param_name_len = sizeof("hl.q")-1;
2178+
solr_char_t *param_value = NULL;
2179+
COMPAT_ARG_SIZE_T param_value_len = 0;
2180+
2181+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &param_value, &param_value_len) == FAILURE) {
2182+
2183+
php_error_docref(NULL, E_WARNING, "Invalid parameters");
2184+
2185+
RETURN_NULL();
2186+
}
2187+
2188+
if (solr_set_normal_param(getThis(), param_name, param_name_len, param_value, param_value_len) == FAILURE) {
2189+
2190+
RETURN_NULL();
2191+
}
2192+
solr_return_solr_params_object();
2193+
}
2194+
/* }}} */
2195+
2196+
21722197
/* {{{ proto SolrQuery SolrQuery::addHighlightField(string value)
21732198
Adds another hl.fl parameter. */
21742199
PHP_METHOD(SolrQuery, addHighlightField)
@@ -4563,6 +4588,23 @@ PHP_METHOD(SolrQuery, getHighlight)
45634588
}
45644589
/* }}} */
45654590

4591+
/* {{{ proto string SolrQuery::getHighlightQuery()
4592+
Returns the query */
4593+
PHP_METHOD(SolrQuery, getHighlightQuery)
4594+
{
4595+
solr_char_t *param_name = (solr_char_t *) "hl.q";
4596+
COMPAT_ARG_SIZE_T param_name_len = sizeof("hl.q")-1;
4597+
solr_param_t *solr_param = NULL;
4598+
4599+
if (solr_param_find(getThis(), param_name, param_name_len, (solr_param_t **) &solr_param) == FAILURE) {
4600+
4601+
RETURN_NULL();
4602+
}
4603+
4604+
solr_normal_param_value_display_string(solr_param, return_value);
4605+
}
4606+
/* }}} */
4607+
45664608
/* {{{ proto array SolrQuery::getHighlightFields()
45674609
Returns the parameter */
45684610
PHP_METHOD(SolrQuery, getHighlightFields)

tests/063.solrquery_HighlightingParameters.phpt

+6-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ $query = new SolrQuery();
88
ob_start();
99
var_dump(
1010
$query->getHighlight(),
11+
$query->getHighlightQuery(),
1112
$query->getHighlightFields(),
1213
$query->getHighlightSnippets(),
1314
$query->getHighlightSnippets('june'),
@@ -38,7 +39,8 @@ var_dump(
3839
$nullOutput = ob_get_clean();
3940

4041

41-
$query->setHighlight(0);
42+
$query->setHighlight(true);
43+
$query->setHighlightQuery('title:PHP OR description:Solr');
4244

4345
$query->addHighlightField('a')->addHighlightField('a')->addHighlightField('a')
4446
->addHighlightField('b');
@@ -115,9 +117,9 @@ var_dump(
115117
echo PHP_EOL.$nullOutput;
116118
?>
117119
--EXPECT--
118-
hl=false&hl.fl=b&hl.snippets=4&f.june.hl.snippets=5&hl.fragsize=41&f.june.hl.fragsize=52&hl.mergeContiguous=true&f.june.hl.mergeContiguous=false&hl.requireFieldMatch=true&hl.maxAnalyzedChars=53&hl.alternateField=a&f.june.hl.alternateField=b&hl.maxAlternateFieldLength=300&f.june.hl.maxAlternateFieldLength=335&hl.formatter=F&f.june.hl.formatter=G&hl.simple.pre=OO&f.june.hl.simple.pre=PP&hl.simple.post=ZZ&f.june.hl.simple.post=YY&hl.fragmenter=gap&f.june.hl.fragmenter=space&hl.usePhraseHighlighter=false&hl.highlightMultiTerm=true&hl.regex.slop=0.0025&hl.regex.pattern=ekpo&hl.regex.maxAnalyzedChars=5
120+
hl=true&hl.q=title:PHP OR description:Solr&hl.fl=b&hl.snippets=4&f.june.hl.snippets=5&hl.fragsize=41&f.june.hl.fragsize=52&hl.mergeContiguous=true&f.june.hl.mergeContiguous=false&hl.requireFieldMatch=true&hl.maxAnalyzedChars=53&hl.alternateField=a&f.june.hl.alternateField=b&hl.maxAlternateFieldLength=300&f.june.hl.maxAlternateFieldLength=335&hl.formatter=F&f.june.hl.formatter=G&hl.simple.pre=OO&f.june.hl.simple.pre=PP&hl.simple.post=ZZ&f.june.hl.simple.post=YY&hl.fragmenter=gap&f.june.hl.fragmenter=space&hl.usePhraseHighlighter=false&hl.highlightMultiTerm=true&hl.regex.slop=0.0025&hl.regex.pattern=ekpo&hl.regex.maxAnalyzedChars=5
119121

120-
bool(false)
122+
bool(true)
121123
array(1) {
122124
[0]=>
123125
string(1) "b"
@@ -175,3 +177,4 @@ NULL
175177
NULL
176178
NULL
177179
NULL
180+
NULL

0 commit comments

Comments
 (0)