statamic-rad-pack / typesense
Statamic 的 typesense 搜索驱动
v1.2.0
2024-08-20 13:15 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.3
- http-interop/http-factory-guzzle: ^1.0
- illuminate/support: ^10.0|^11.0
- statamic/cms: ^5.0
- typesense/typesense-php: ^4.9
Requires (Dev)
- laravel/pint: ^1.17
- orchestra/testbench: ^8.14 || ^9.0
- phpunit/phpunit: ^10.0
README
此插件为 Statamic 网站提供 Typesense 搜索驱动。
要求
- PHP 8.2+
- Laravel 10+
- Statamic 5
- Typesense 0.2+
安装
composer require statamic-rad-pack/typesense
将以下变量添加到您的 env 文件中
TYPESENSE_HOST=http://127.0.0.1 TYPESENSE_API_KEY=
将新驱动添加到 statamic/search.php
配置文件中
'drivers' => [ // other drivers 'typesense' => [ 'client' => [ 'api_key' => env('TYPESENSE_API_KEY', 'xyz'), 'nodes' => [ [ 'host' => env('TYPESENSE_HOST', 'localhost'), 'port' => env('TYPESENSE_PORT', '8108'), 'path' => env('TYPESENSE_PATH', ''), 'protocol' => env('TYPESENSE_PROTOCOL', 'http'), ], ], 'nearest_node' => [ 'host' => env('TYPESENSE_HOST', 'localhost'), 'port' => env('TYPESENSE_PORT', '8108'), 'path' => env('TYPESENSE_PATH', ''), 'protocol' => env('TYPESENSE_PROTOCOL', 'http'), ], 'connection_timeout_seconds' => env('TYPESENSE_CONNECTION_TIMEOUT_SECONDS', 2), 'healthcheck_interval_seconds' => env('TYPESENSE_HEALTHCHECK_INTERVAL_SECONDS', 30), 'num_retries' => env('TYPESENSE_NUM_RETRIES', 3), 'retry_interval_seconds' => env('TYPESENSE_RETRY_INTERVAL_SECONDS', 1), ], ], ],
您可以使用以下命令可选地发布此包的配置文件:
php artisan vendor:publish --tag=statamic-typesense-config
搜索设置
您想要为每个索引定义的任何附加设置都可以包含在 statamic/search.php
配置文件中。当索引创建时,设置将被更新。
'articles' => [ 'driver' => 'typesense', 'searchables' => ['collection:articles'], 'fields' => ['id', 'title', 'url', 'type', 'content', 'locale'], 'settings' => [ 'schema' => [ /* Pass an optional schema, see the Typesense documentation for more info: https://typesense.org/docs/26.0/api/collections.html#with-pre-defined-schema */ 'fields' => [ [ 'name' => 'company_name', 'type' => 'string' ], [ 'name' => 'num_employees', 'type' => 'int32' ], [ 'name' => 'country', 'type' => 'string', 'facet' => true ], ], ], /* Pass any of the options from https://typesense.org/docs/26.0/api/search.html#search-parameters */ 'search_options' => [ /* eg Specify a custom sort by order, see the Typesense documentation for more info: https://typesense.org/docs/guide/ranking-and-relevance.html#ranking-based-on-relevance-and-popularity */ 'sort_by' => '_text_match(buckets: 10):desc,weighted_score:desc', ], ], ],