1. Go to this page and download the library: Download tag1/scolta-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tag1 / scolta-php example snippets
Tag1\Scolta\Export\ContentItem;
use Tag1\Scolta\Index\IndexBuildOrchestrator;
use Tag1\Scolta\Index\BuildIntent;
use Tag1\Scolta\Index\MemoryBudget;
// Load the 20 recipe HTML files from the fixture directory
$fixtures = glob(__DIR__ . '/tests/fixtures/recipes/*.html');
$items = [];
foreach ($fixtures as $file) {
$dom = new DOMDocument();
@$dom->loadHTMLFile($file);
$body = $dom->getElementById(basename($file, '.html'));
$id = pathinfo($file, PATHINFO_FILENAME);
$title = $dom->getElementsByTagName('title')[0]->textContent;
$items[] = new ContentItem(
id: $id,
title: $title,
bodyHtml: $dom->saveHTML($body),
url: '/recipes/' . $id,
date: '2024-03-01',
siteName: 'Recipe Catalog',
);
}
// Run the build using the conservative memory profile (96 MB internal budget)
$orchestrator = new IndexBuildOrchestrator(
stateDir: '/tmp/scolta-state',
outputDir: '/var/www/html/pagefind',
language: 'en',
);
$result = $orchestrator->build(
intent: BuildIntent::fresh(count($items), MemoryBudget::conservative()),
pages: $items,
);
printf("Indexed %d recipes in %.1fs\n", $result->pageCount, $result->elapsedSeconds);
// Indexed 20 recipes in 0.3s
use Tag1\Scolta\Config\ScoltaConfig;
$config = ScoltaConfig::fromArray([
// AI provider — no default. Omitting it leaves AI off and search working.
'ai_provider' => 'anthropic',
'ai_api_key' => getenv('SCOLTA_API_KEY'),
'ai_model' => 'claude-sonnet-4-5-20250929',
'ai_expand_query' => true,
'ai_summarize' => true,
// Scoring — tuned for a recipe catalog (no recency, title precision)
'scoring' => [
'title_match_boost' => 1.5,
'title_all_terms_multiplier' => 2.0,
'content_match_boost' => 0.4,
'recency_strategy' => 'none',
'language' => 'en',
],
// Site identity (used in AI prompts)
'site_name' => 'Recipe Catalog',
'site_description' => 'a collection of 20 international recipes',
]);
use Tag1\Scolta\Index\MemoryBudget;
use Tag1\Scolta\Index\MemoryBudgetSuggestion;
// Auto-detect and suggest a profile based on the current PHP memory_limit
$suggestion = MemoryBudgetSuggestion::suggest();
// $suggestion->profile is 'conservative', 'balanced', or 'aggressive'
// $suggestion->warning is non-empty if the limit is tight
// Or specify directly
$budget = MemoryBudget::balanced(); // internal budget: 384 MB
$budget = MemoryBudget::aggressive(); // internal budget: 1 GB
// Or pass a budget in bytes
$budget = MemoryBudget::fromBytes(256 * 1024 * 1024);