Search/Fixup

* fix creature indices only including creatures with name AND subname
 * closes #500
This commit is contained in:
Sarjuuk 2026-03-25 20:54:28 +01:00
parent c93417301a
commit 38dc0e834e
2 changed files with 20 additions and 9 deletions

View file

@ -0,0 +1 @@
UPDATE `aowow_dbversion` SET `sql` = CONCAT(IFNULL(`sql`, ''), ' search');

View file

@ -133,13 +133,18 @@ CLISetup::registerSetup("sql", new class extends SetupScript
$rows = array_filter($rows, fn($x) => $x['name'] !== null);
CLI::write(' * inserting', tmpRow: true);
DB::Aowow()->qry('INSERT INTO ::objects_search %m', array(
$result = array(
'id' => array_column($rows, 'id'),
'locale' => array_column($rows, 'locale'),
'nName' => array_column($rows, 'name')
));
);
$n = ceil(count(current($result)) / CLISetup::SQL_BATCH);
for ($i = 0; $i < $n; $i++)
{
CLI::write(' * inserting batch '.($i + 1).' / '.$n, tmpRow: true);
DB::Aowow()->qry('INSERT INTO ::objects_search %m', array_map(fn($x) => array_slice($x, $i * CLISetup::SQL_BATCH, CLISetup::SQL_BATCH), $result));
}
}
private function normalizeCreatures() : void
@ -162,16 +167,21 @@ CLISetup::registerSetup("sql", new class extends SetupScript
array_walk($rows, self::normalizeRow(...), ['name', 'subname']);
$rows = array_filter($rows, fn($x) => $x['name'] !== null && $x['subname'] !== null);
$rows = array_filter($rows, fn($x) => $x['name'] !== null || $x['subname'] !== null);
CLI::write(' * inserting', tmpRow: true);
DB::Aowow()->qry('INSERT INTO ::creature_search %m', array(
$result = array(
'id' => array_column($rows, 'id'),
'locale' => array_column($rows, 'locale'),
'nName' => array_column($rows, 'name'),
'nSubname' => array_column($rows, 'subname')
));
);
$n = ceil(count(current($result)) / CLISetup::SQL_BATCH);
for ($i = 0; $i < $n; $i++)
{
CLI::write(' * inserting batch '.($i + 1).' / '.$n, tmpRow: true);
DB::Aowow()->qry('INSERT INTO ::creature_search %m', array_map(fn($x) => array_slice($x, $i * CLISetup::SQL_BATCH, CLISetup::SQL_BATCH), $result));
}
}
private function normalizeItems() : void