oscarweijman/php-elastic
最新稳定版本:v1.1.1
Composer 安装命令:
composer require oscarweijman/php-elastic
包简介
Een moderne PHP library voor het werken met Elasticsearch, met focus op eenvoud en type safety
README 文档
README
Een moderne PHP library voor het werken met Elasticsearch, met focus op eenvoud en type safety.
Installatie
composer require oscarweijman/php-elastic
Basis gebruik
use OscarWeijman\PhpElastic\ElasticClient; // Maak een client instance $client = new ElasticClient([ 'hosts' => ['localhost:9200'], ]); // Controleer of Elasticsearch beschikbaar is if ($client->ping()) { echo "Verbonden met Elasticsearch!"; } // Maak een index $client->createIndex('my-index', [ 'number_of_shards' => 1, 'number_of_replicas' => 1 ], [ 'properties' => [ 'title' => ['type' => 'text'], 'content' => ['type' => 'text'], 'tags' => ['type' => 'keyword'], 'published_at' => ['type' => 'date'] ] ]); // Voeg een document toe $client->index('my-index', [ 'title' => 'Mijn eerste document', 'content' => 'Dit is de inhoud van mijn document', 'tags' => ['elasticsearch', 'php'], 'published_at' => '2023-01-01T12:00:00Z' ], 'doc-1'); // Zoek documenten $results = $client->search([ 'index' => 'my-index', 'body' => [ 'query' => [ 'match' => [ 'content' => 'document' ] ] ] ]); // Verwijder een document $client->delete('my-index', 'doc-1'); // Verwijder een index $client->deleteIndex('my-index');
Vector Search en Embeddings
PHP Elastic ondersteunt ook vector search en embeddings voor semantisch zoeken:
use OscarWeijman\PhpElastic\ElasticClient; use OscarWeijman\PhpElastic\Embedding\EmbeddingService; use OscarWeijman\PhpElastic\Embedding\EmbeddingManager; // Maak client instances $client = new ElasticClient(['hosts' => ['localhost:9200']]); $embeddingService = new EmbeddingService( 'http://localhost:11434', // Ollama API URL '', // API key (niet nodig voor Ollama) [ 'nomic-embed' => [ 'name' => 'nomic-embed-text', 'dims' => 768, 'type' => 'ollama' ] ] ); $embeddingManager = new EmbeddingManager($client, $embeddingService); // Maak een index met vector mapping $embeddingManager->createVectorIndex('articles', 'nomic-embed', [ 'title' => ['type' => 'text'], 'category' => ['type' => 'keyword'] ]); // Voeg een document toe met embedding $embeddingManager->indexWithEmbedding( 'articles', 'nomic-embed', 'Dit is een artikel over machine learning en AI.', [ 'title' => 'Machine Learning Introductie', 'category' => 'technology' ], 'article-1' ); // Zoek semantisch vergelijkbare documenten $results = $embeddingManager->searchWithEmbedding( 'articles', 'nomic-embed', 'Wat is kunstmatige intelligentie?', 5 ); // Hybride zoeken (vector + keyword) $results = $embeddingManager->searchHybrid( 'articles', 'nomic-embed', 'machine learning technieken', 5, [], 'embedding', 'content', 0.7, // vector boost 0.3 // text boost );
Evaluatie van Embedding Modellen
Je kunt verschillende embedding modellen evalueren om te bepalen welke het beste presteert voor jouw use case:
use OscarWeijman\PhpElastic\ElasticClient; use OscarWeijman\PhpElastic\Embedding\EmbeddingService; use OscarWeijman\PhpElastic\Embedding\ModelEvaluator; // Configureer modellen $embeddingService = new EmbeddingService('http://localhost:11434'); $embeddingService->addModel('nomic-embed', 'nomic-embed-text', 768, 'ollama'); $embeddingService->addModel('all-minilm', 'all-minilm', 384, 'ollama'); $embeddingService->addModel('e5-small', 'e5-small-v2', 384, 'ollama'); // Maak evaluator met test data $evaluator = new ModelEvaluator( $client, $embeddingService, $testData, // Array met documenten en queries ['nomic-embed', 'all-minilm', 'e5-small'] ); // Voer evaluatie uit $evaluator->setupTestIndices(); $evaluator->indexTestData(); $results = $evaluator->evaluateModels(); $evaluator->printResults();
Geavanceerd gebruik
Bekijk de voorbeelden in de examples directory voor meer geavanceerde gebruiksscenario's:
01-basic-usage.php: Basis gebruik van de client02-index-management.php: Index beheer03-document-management.php: Document beheer04-search-examples.php: Zoekvoorbeelden05-advanced-search.php: Geavanceerde zoekopdrachten06-single-node-cluster.php: Werken met een single-node cluster07-vector-search.php: Vector search en embeddings08-model-evaluation.php: Evaluatie van embedding modellen
Documentatie
Volledige documentatie is beschikbaar in de wiki.
Licentie
MIT
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-03-15