Skip to content
Snippets Groups Projects

Auto-choose tokenizer

Files
5
@@ -3,9 +3,11 @@
namespace Drupal\ai_search\Backend;
use Drupal\Core\Form\FormStateInterface;
use Drupal\ai\Utility\TokenizerInterface;
use Drupal\ai_search\Trait\AiSearchBackendEmbeddingsEngineTrait;
use Drupal\ai_search\Trait\AiSearchBackendEmbeddingsStrategyTrait;
use Drupal\search_api\Backend\BackendPluginBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Base class for Search API AI backend plugins.
@@ -21,6 +23,43 @@ abstract class AiSearchBackendPluginBase extends BackendPluginBase {
use AiSearchBackendEmbeddingsEngineTrait;
use AiSearchBackendEmbeddingsStrategyTrait;
/**
* Constructs an AiSearchBackendPluginBase object.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\ai\Utility\TokenizerInterface $tokenizer
* The tokenizer.
*/
public function __construct(
array $configuration,
string $plugin_id,
array $plugin_definition,
protected TokenizerInterface $tokenizer,
) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$tokenizer = $container->get('ai.tokenizer');
$plugin = new static($configuration, $plugin_id, $plugin_definition, $tokenizer);
/** @var \Drupal\Core\StringTranslation\TranslationInterface $translation */
$translation = $container->get('string_translation');
$plugin->setStringTranslation($translation);
$plugin->setFieldsHelper($container->get('search_api.fields_helper'));
$plugin->setMessenger($container->get('messenger'));
$plugin->tokenizer = $container->get('ai.tokenizer');
return $plugin;
}
/**
* {@inheritdoc}
*/
@@ -54,7 +93,7 @@ abstract class AiSearchBackendPluginBase extends BackendPluginBase {
// Build the form for both types.
return array_merge(
$this->engineConfigurationForm($form, $form_state),
$this->engineConfigurationForm($form, $form_state, $this->tokenizer),
$this->strategyConfigurationForm($form, $form_state)
);
}
Loading