roadiz/solr-bundle
最新稳定版本:v2.7.28
Composer 安装命令:
composer require roadiz/solr-bundle
包简介
README 文档
README
Installation
Make sure Composer is installed globally, as explained in the installation chapter of the Composer documentation.
Applications that use Symfony Flex
Open a command console, enter your project directory and execute:
$ composer require roadiz/solr-bundle
Applications that don't use Symfony Flex
Step 1: Download the Bundle
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require roadiz/solr-bundle
Step 2: Enable the Bundle
Then, enable the bundle by adding it to the list of registered bundles
in the config/bundles.php file of your project:
// config/bundles.php return [ // ... \RZ\Roadiz\SolrBundle\RoadizSolrBundle::class => ['all' => true], ];
Configuration
Docker compose
Here is an example using docker compose to run Solr Cloud in your project:
services: # ... solr: image: solr:9-slim volumes: - solr:/var/solr environment: ZK_HOST: "zookeeper:2181" depends_on: [ zookeeper ] zookeeper: image: pravega/zookeeper:0.2.15 volumes: - zookeeper-data:/data - zookeeper-datalog:/datalog - zookeeper-logs:/logs environment: ZOO_4LW_COMMANDS_WHITELIST: mntr,conf,ruok volumes: # ... solr: zookeeper-data: zookeeper-datalog: zookeeper-logs:
DotEnv variables
###> nelmio/solarium-bundle ### SOLR_HOST=solr SOLR_PORT=8983 SOLR_PATH=/ SOLR_CORE_NAME=roadiz # For Solr Cloud, use the collection name instead of core name SOLR_COLLECTION_NAME=roadiz SOLR_COLLECTION_NUM_SHARDS=1 SOLR_COLLECTION_REPLICATION_FACTOR=1 SOLR_SECURE=0 ###< nelmio/solarium-bundle ###
Solarium config
Update nelmio/solarium-bundle default config
# config/packages/nelmio_solarium.yaml nelmio_solarium: endpoints: default: # We use Solr Cloud with collection host: '%env(SOLR_HOST)%' port: '%env(int:SOLR_PORT)%' path: '%env(SOLR_PATH)%' core: '%env(SOLR_CORE_NAME)%' #core: '%env(SOLR_COLLECTION_NAME)%' clients: default: endpoints: [default] # You can customize the http timeout (in seconds) here. The default is 5sec. adapter_timeout: 5
Configure fuzzy search options in a dedicated roadiz_solr config file:
# config/packages/roadiz_solr.yaml roadiz_solr: search: fuzzy_proximity: 2 fuzzy_min_term_length: 3
You can use Solr Cloud with a collection instead of a core by setting the SOLR_COLLECTION_NAME environment variable and commenting the core line.
Then you will need to set the SOLR_COLLECTION_NUM_SHARDS and SOLR_COLLECTION_REPLICATION_FACTOR variables to configure your collection and execute
solr:init command to create the collection.
Fuzzy search options should now be configured in roadiz_solr.search.
For backward compatibility, roadiz_core.solr.search is still read as a fallback during migration.
Extending Solr configuration
If you want to add/remove fields and update filters you can add an event-subscriber to the RZ\Roadiz\SolrBundle\Event\SolrInitializationEvent event.
An abstract subscriber is provided in the bundle to provide helper methods to add fields and filters: RZ\Roadiz\SolrBundle\EventListener\AbstractSolrInitializationSubscriber.
Initialize Solr Core or Collection
# Initialize Solr collection (for Solr Cloud) bin/console solr:init # Reindex all NodesSources bin/console solr:reindex
Drop Solr Collection
bin/console solr:drop
Api Resources
Add api_nodes_sources_search API operation to expose NodesSourcesSearchController
# config/api_resources/nodes_sources.yml resources: RZ\Roadiz\CoreBundle\Entity\NodesSources: operations: api_nodes_sources_search: class: ApiPlatform\Metadata\GetCollection method: 'GET' uriTemplate: '/nodes_sources/search' controller: RZ\Roadiz\SolrBundle\Controller\NodesSourcesSearchController read: false normalizationContext: groups: - get - nodes_sources_base - nodes_sources_default - urls - tag_base - translation_base - document_display openapi: summary: Search NodesSources resources description: | Search all website NodesSources resources using **Solr** full-text search engine parameters: - type: string name: search in: query required: true description: Search pattern schema: type: string
Monolog
Add a solr handler to your monolog config if you want to separate its logs in a different file.
# config/packages/monolog.yaml monolog: handlers: solr: type: stream path: "%kernel.logs_dir%/solr.%kernel.environment%.log" level: debug channels: ["searchEngine"]
Cron
This bundle provides a new CronTask to update Solr index each night at 3:30 AM:
#[AsCronTask(
expression: '30 3 * * *',
jitter: 120,
arguments: '--no-debug -n -q',
)]
Make sure to run Symfony scheduler.
Contributing
Report issues and send Pull Requests in the main Roadiz repository
统计信息
- 总下载量: 745
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2025-06-11