Added search with wildcard (with ? and *)
This commit is contained in:
parent
969dc21bb6
commit
9836edfb58
1 changed files with 31 additions and 12 deletions
|
|
@ -163,22 +163,41 @@ class AdvancedSearchQuery {
|
||||||
$q = implode(' ', $q);
|
$q = implode(' ', $q);
|
||||||
|
|
||||||
/** @var Solarium\QueryType\Select\Query\Query $solarium_query */
|
/** @var Solarium\QueryType\Select\Query\Query $solarium_query */
|
||||||
// enable dismax search query option
|
if ((strpos($q, "*") !== false || strpos($q, "?") !== false)) {
|
||||||
/** @var Solarium\QueryType\Select\Query\Component\DisMax $dismax */
|
// enable wildcard
|
||||||
$dismax = $solarium_query->getDisMax();
|
$tmp = str_replace('"', "", trim($q));
|
||||||
$dismax->setQueryParser('edismax');
|
$query_fields = [];
|
||||||
$query_fields = [];
|
foreach ($field_mapping as $key => $field) {
|
||||||
foreach ($field_mapping as $key => $field) {
|
foreach ($field as $f => $item) {
|
||||||
foreach ($field as $f => $item) {
|
if (strpos($item, 'sticky') === false && !in_array($item, ['score', 'random', 'boost_document'])
|
||||||
if (strpos($item, 'sticky') === false) {
|
&& ((strpos( $item, "sm_" ) === 0) || (strpos( $item, "tm_" ) === 0) || (strpos($item, "sort_ss_") === 0) || (strpos($item, "ts_") === 0)
|
||||||
array_push($query_fields, $item);
|
|| (strpos($item, "ss_") === 0)
|
||||||
|
)){
|
||||||
|
array_push($query_fields, '('.$item. ':'. $tmp .')');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$q = implode(" ", array_unique($query_fields));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
// enable dismax search query option
|
||||||
|
/** @var Solarium\QueryType\Select\Query\Component\DisMax $dismax */
|
||||||
|
$dismax = $solarium_query->getDisMax();
|
||||||
|
$dismax->setQueryParser('edismax');
|
||||||
|
$query_fields = [];
|
||||||
|
foreach ($field_mapping as $key => $field) {
|
||||||
|
foreach ($field as $f => $item) {
|
||||||
|
if (strpos($item, 'sticky') === false) {
|
||||||
|
array_push($query_fields, $item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$query_fields = implode(" ", array_unique($query_fields));
|
||||||
|
$dismax->setQueryFields($query_fields);
|
||||||
}
|
}
|
||||||
$query_fields = implode(" ", array_unique($query_fields));
|
|
||||||
$dismax->setQueryFields($query_fields);
|
|
||||||
$solarium_query->setQuery($q);
|
$solarium_query->setQuery($q);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue