Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
score example
$tokens
[
]
=
$token
;
}
/** @var list<string> $tokens */
$tokens
=
array_keys
(
array_flip
(
$tokens
)
)
;
$pattern
=
new
SearchPattern
(
new
SearchTerm
(
$word
)
)
;
$pattern
->
setBooleanClause
(
$this
->
getConfigBooleanClause
(
$context
)
)
;
$pattern
->
setTokenTerms
(
$matches
)
;
$scoring
=
$this
->
score
(
$tokens
, ArrayNormalizer::
flatten
(
$matches
)
)
;
// only use the 8 best matches, otherwise the query might explode
$scoring
= \
array_slice
(
$scoring
, 0, self::RELEVANT_KEYWORD_COUNT, true
)
;
foreach
(
$scoring
as
$keyword
=>
$score
)
{
$this
->logger->
info
(
'Search match: ' .
$keyword
. ' with score ' .
(float)
$score
)
;
}
foreach
(
$scoring
as
$keyword
=>
$score
)
{
$pattern
->
addTerm
(
new
SearchTerm
(
(string)
$keyword
,
$score
)
)
;
}