mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-03 19:28:40 +00:00
Better catch for long queries, #3903
This commit is contained in:
@@ -234,11 +234,11 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
foreach ($rule->ruleTriggers as $ruleTrigger) {
|
||||
// if needs no context, value is different:
|
||||
$needsContext = config(sprintf('firefly.search.operators.%s.needs_context', $ruleTrigger->trigger_type)) ?? true;
|
||||
if(false === $needsContext) {
|
||||
if (false === $needsContext) {
|
||||
Log::debug(sprintf('SearchRuleEngine:: add a rule trigger: %s:true', $ruleTrigger->trigger_type));
|
||||
$searchArray[$ruleTrigger->trigger_type] = 'true';
|
||||
}
|
||||
if(true === $needsContext) {
|
||||
if (true === $needsContext) {
|
||||
Log::debug(sprintf('SearchRuleEngine:: add a rule trigger: %s:"%s"', $ruleTrigger->trigger_type, $ruleTrigger->trigger_value));
|
||||
$searchArray[$ruleTrigger->trigger_type] = sprintf('"%s"', $ruleTrigger->trigger_value);
|
||||
}
|
||||
@@ -249,20 +249,17 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
Log::debug(sprintf('SearchRuleEngine:: add local added operator: %s:"%s"', $operator['type'], $operator['value']));
|
||||
$searchArray[$operator['type']] = sprintf('"%s"', $operator['value']);
|
||||
}
|
||||
$toJoin = [];
|
||||
foreach ($searchArray as $type => $value) {
|
||||
$toJoin[] = sprintf('%s:%s', $type, $value);
|
||||
}
|
||||
|
||||
$searchQuery = join(' ', $toJoin);
|
||||
Log::debug(sprintf('SearchRuleEngine:: Search strict query for rule #%d ("%s") = %s', $rule->id, $rule->title, $searchQuery));
|
||||
|
||||
// build and run the search engine.
|
||||
$searchEngine = app(SearchInterface::class);
|
||||
$searchEngine->setUser($this->user);
|
||||
$searchEngine->setPage(1);
|
||||
$searchEngine->setLimit(31337);
|
||||
$searchEngine->parseQuery($searchQuery);
|
||||
|
||||
foreach ($searchArray as $type => $value) {
|
||||
$searchEngine->parseQuery(sprintf('%s:%s', $type, $value));
|
||||
}
|
||||
|
||||
|
||||
$result = $searchEngine->searchTransactions();
|
||||
$collection = $result->getCollection();
|
||||
@@ -286,13 +283,13 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
Log::debug('Skip trigger type.');
|
||||
continue;
|
||||
}
|
||||
$searchArray = [];
|
||||
$searchArray = [];
|
||||
$needsContext = config(sprintf('firefly.search.operators.%s.needs_context', $ruleTrigger->trigger_type)) ?? true;
|
||||
if(false === $needsContext) {
|
||||
if (false === $needsContext) {
|
||||
Log::debug(sprintf('SearchRuleEngine:: non strict, will search for: %s:true', $ruleTrigger->trigger_type));
|
||||
$searchArray[$ruleTrigger->trigger_type] = 'true';
|
||||
}
|
||||
if(true === $needsContext) {
|
||||
if (true === $needsContext) {
|
||||
Log::debug(sprintf('SearchRuleEngine:: non strict, will search for: %s:"%s"', $ruleTrigger->trigger_type, $ruleTrigger->trigger_value));
|
||||
$searchArray[$ruleTrigger->trigger_type] = sprintf('"%s"', $ruleTrigger->trigger_value);
|
||||
}
|
||||
@@ -302,21 +299,16 @@ class SearchRuleEngine implements RuleEngineInterface
|
||||
Log::debug(sprintf('SearchRuleEngine:: add local added operator: %s:"%s"', $operator['type'], $operator['value']));
|
||||
$searchArray[$operator['type']] = sprintf('"%s"', $operator['value']);
|
||||
}
|
||||
$toJoin = [];
|
||||
foreach ($searchArray as $type => $value) {
|
||||
$toJoin[] = sprintf('%s:%s', $type, $value);
|
||||
}
|
||||
|
||||
$searchQuery = join(' ', $toJoin);
|
||||
Log::debug(sprintf('SearchRuleEngine:: Search strict query for non-strict rule #%d ("%s") = %s', $rule->id, $rule->title, $searchQuery));
|
||||
|
||||
// build and run a search:
|
||||
// build and run the search engine.
|
||||
$searchEngine = app(SearchInterface::class);
|
||||
$searchEngine->setUser($this->user);
|
||||
$searchEngine->setPage(1);
|
||||
$searchEngine->setLimit(31337);
|
||||
$searchEngine->parseQuery($searchQuery);
|
||||
|
||||
foreach ($searchArray as $type => $value) {
|
||||
$searchEngine->parseQuery(sprintf('%s:%s', $type, $value));
|
||||
}
|
||||
|
||||
$result = $searchEngine->searchTransactions();
|
||||
$collection = $result->getCollection();
|
||||
|
Reference in New Issue
Block a user