From 1d17f186d5d34ab70b0c5ec0a43f2ab8e4b7c778 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Sat, 20 May 2017 17:26:28 +0200 Subject: [PATCH 1/3] add mapping configuration --- .../PuceneBundle/DependencyInjection/Configuration.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php b/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php index 5ef3460..2f24129 100644 --- a/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php +++ b/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php @@ -86,6 +86,11 @@ private function getIndexNode() ->children() ->scalarNode('type')->defaultValue('string')->end() ->scalarNode('analyzer')->defaultValue('standard')->end() + ->booleanNode('index')->defaultValue('true')->end() + ->floatNode('boost')->defaultValue(1)->end() + ->arrayNode('options') + ->prototype('scalar')->end()->defaultValue([]) + ->end() ->end() ->end() ->end() From 35bd1ea8f62dcacbd64495aeed8bc4083432c547 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Sat, 20 May 2017 19:04:34 +0200 Subject: [PATCH 2/3] fix configuration for more options --- src/Bundle/PuceneBundle/DependencyInjection/Configuration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php b/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php index 2f24129..d2d498d 100644 --- a/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php +++ b/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php @@ -89,7 +89,7 @@ private function getIndexNode() ->booleanNode('index')->defaultValue('true')->end() ->floatNode('boost')->defaultValue(1)->end() ->arrayNode('options') - ->prototype('scalar')->end()->defaultValue([]) + ->prototype('variable')->end()->defaultValue([]) ->end() ->end() ->end() From 705eebe5b7ed37e071b399cc1a15754987d2b486 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Sat, 20 May 2017 21:07:11 +0200 Subject: [PATCH 3/3] update type configuration with available options --- .../DependencyInjection/Configuration.php | 87 ++++++++++++++++--- src/Component/Pucene/Dbal/PuceneSchema.php | 15 ++++ 2 files changed, 91 insertions(+), 11 deletions(-) diff --git a/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php b/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php index 7863abd..b7f84ee 100644 --- a/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php +++ b/src/Bundle/PuceneBundle/DependencyInjection/Configuration.php @@ -84,17 +84,8 @@ private function getIndexNode() ->arrayNode('properties') ->useAttributeAsKey('name') ->prototype('array') - ->children() - ->enumNode('type') - ->values(Types::getTypes()) - ->defaultValue('text') - ->end() - ->scalarNode('analyzer')->defaultValue('standard')->end() - ->booleanNode('index')->defaultValue('true')->end() - ->floatNode('boost')->defaultValue(1)->end() - ->arrayNode('options') - ->prototype('variable')->end()->defaultValue([]) - ->end() + ->children(); + $node = $this->getFieldMappingNode($node) ->end() ->end() ->end() @@ -107,4 +98,78 @@ private function getIndexNode() return $node; } + + private function getFieldMappingNode($node, $fields = true) + { + $node + ->enumNode('type') + ->values(Types::getTypes()) + ->defaultValue('text') + ->end() + ->scalarNode('analyzer')->end() + ->booleanNode('index')->end() + ->floatNode('boost')->end(); + + if ($fields) { + $node = $node + ->arrayNode('fields') + ->useAttributeAsKey('name') + ->prototype('array') + ->children(); + $node = $this->getFieldMappingNode($node, false) + ->end() + ->end() + ->end(); + } + + $node = $node + ->booleanNode('eager_global_ordinals')->end() + ->booleanNode('fielddata')->end() + ->arrayNode('fielddata_frequency_filter') + ->children() + ->floatNode('min')->end() + ->floatNode('max')->end() + ->integerNode('min_segment_size')->end() + ->end() + ->end() + ->booleanNode('include_in_all')->end() + ->enumNode('index_options') + ->values([ + 'docs', + 'freqs', + 'positions', + 'offsets', + ]) + ->end() + ->booleanNode('norms')->end() + ->integerNode('position_increment_gap')->end() + ->booleanNode('store')->end() + ->scalarNode('search_analyzer')->end() + ->scalarNode('search_quote_analyzer')->end() + ->enumNode('similarity') + ->values([ + 'BM25', + 'classic', + 'boolean', + ]) + ->end() + ->enumNode('term_vector') + ->values([ + 'no', + 'yes', + 'with_positions', + 'with_offsets', + 'with_positions_offsets', + ]) + ->end() + ->booleanNode('doc_values')->end() + ->integerNode('ignore_above')->end() + ->scalarNode('null_value')->end() + ->scalarNode('normalizer')->end() + ->booleanNode('coerce')->end() + ->booleanNode('ignore_malformed')->end() + ->scalarNode('format')->end(); + + return $node; + } } diff --git a/src/Component/Pucene/Dbal/PuceneSchema.php b/src/Component/Pucene/Dbal/PuceneSchema.php index 7b6c947..b7f2724 100644 --- a/src/Component/Pucene/Dbal/PuceneSchema.php +++ b/src/Component/Pucene/Dbal/PuceneSchema.php @@ -30,6 +30,7 @@ public function __construct($prefix) $this->createDocumentsTable(); $this->createTokensTable(); + $this->createMappingsTable(); $this->createDocumentTermsTable(); $this->createDocumentFieldsTables(); } @@ -96,6 +97,20 @@ private function createDocumentTermsTable() $fields->addIndex(['term']); } + private function createMappingsTable() + { + $this->tableNames['mappings'] = sprintf('pu_%s_mappings', $this->prefix); + + $fields = $this->schema->createTable($this->tableNames['mappings']); + $fields->addColumn('id', 'integer', ['autoincrement' => true]); + $fields->addColumn('name', 'string', ['length' => 255]); + $fields->addColumn('field_name', 'string', ['length' => 255]); + $fields->addColumn('options', 'json_array'); + + $fields->setPrimaryKey(['id']); + $fields->addIndex(['type', 'field_name']); + } + /** * Create table per mapping type. *