Skip to content

Commit f8ac607

Browse files
committed
New indexation version who use stopwords,stemming etc
1 parent 551b544 commit f8ac607

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2182
-2593
lines changed

Commands/GenerateIndexesCommand.php

+17-15
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
<?php
2-
/**
3-
* Created by PhpStorm.
4-
* User: nicolasbarbey
5-
* Date: 03/08/2020
6-
* Time: 09:55
7-
*/
82

93
namespace TntSearch\Commands;
104

11-
5+
use Exception;
126
use Symfony\Component\Console\Input\InputInterface;
137
use Symfony\Component\Console\Output\OutputInterface;
148
use Symfony\Component\Filesystem\Filesystem;
159
use Thelia\Command\ContainerAwareCommand;
16-
use TntSearch\Event\GenerateIndexesEvent;
10+
use TntSearch\Service\Provider\IndexationProvider;
1711
use TntSearch\TntSearch;
1812

1913
class GenerateIndexesCommand extends ContainerAwareCommand
@@ -25,18 +19,26 @@ public function configure()
2519
->setDescription('Generate indexes for TntSearch module');
2620
}
2721

28-
public function execute(InputInterface $input, OutputInterface $output)
22+
public function execute(InputInterface $input, OutputInterface $output): int
2923
{
30-
3124
$fs = new Filesystem();
25+
26+
/** @var IndexationProvider $indexationProvider */
27+
$indexationProvider = $this->getContainer()->get('tntsearch.indexation.provider');
28+
3229
if (is_dir(TntSearch::INDEXES_DIR)) {
3330
$fs->remove(TntSearch::INDEXES_DIR);
3431
}
3532

36-
$this->getDispatcher()->dispatch(
37-
GenerateIndexesEvent::GENERATE_INDEXES,
38-
new GenerateIndexesEvent()
39-
);
40-
}
33+
ini_set('max_execution_time', 3600);
4134

35+
try {
36+
$indexationProvider->indexAll();
37+
38+
} catch (Exception $exception) {
39+
$output->write($exception->getMessage());
40+
}
41+
42+
return 1;
43+
}
4244
}

CompilerPass/IndexPass.php

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace TntSearch\CompilerPass;
4+
5+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
6+
use Symfony\Component\DependencyInjection\ContainerBuilder;
7+
use Symfony\Component\DependencyInjection\Reference;
8+
9+
class IndexPass implements CompilerPassInterface
10+
{
11+
/**
12+
* @param ContainerBuilder $container
13+
* @return void
14+
*/
15+
public function process(ContainerBuilder $container)
16+
{
17+
if (!$container->has('tntsearch.indexation.provider')) {
18+
return;
19+
}
20+
21+
$definition = $container->findDefinition('tntsearch.indexation.provider');
22+
23+
$taggedServices = $container->findTaggedServiceIds('tntsearch.index');
24+
25+
foreach ($taggedServices as $id => $tags) {
26+
$definition->addMethodCall('addIndex', [new Reference($id)]);
27+
}
28+
}
29+
}

Config/config.xml

+62-10
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,74 @@
44
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
55
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
66

7+
<commands>
8+
<command class="TntSearch\Commands\GenerateIndexesCommand"/>
9+
</commands>
10+
711
<loops>
8-
<loop name="tnt-search" class="TntSearch\Loop\TntSearchLoop" />
12+
<loop name="tnt-search" class="TntSearch\Loop\SearchLoop"/>
913
</loops>
1014

1115
<services>
12-
<service id="tntsearch.update.listener" class="TntSearch\EventListeners\UpdateListener">
16+
<!--Listeners -->
17+
<service id="tntsearch.indexation.update" class="TntSearch\EventListener\IndexUpdateListener">
18+
<argument type="service" id="tntsearch.update.index"/>
1319
<tag name="kernel.event_subscriber"/>
1420
</service>
1521

16-
<service id="tntsearch.generate.indexes.listener" class="TntSearch\EventListeners\GenerateIndexesListener">
17-
<tag name="kernel.event_subscriber"/>
22+
<!--Provider-->
23+
<service id="tntsearch.provider" class="TntSearch\Service\Provider\TntSearchProvider">
24+
<argument type="service" id="tntsearch.stemmer"/>
25+
<argument type="service" id="tntsearch.stop.word"/>
26+
</service>
27+
28+
<service id="tntsearch.indexation.provider" class="TntSearch\Service\Provider\IndexationProvider">
29+
</service>
30+
31+
<service id="tntsearch.update.index" class="TntSearch\Service\IndexItem">
32+
<argument type="service" id="tntsearch.indexation.provider"/>
33+
<argument type="service" id="tntsearch.provider"/>
34+
</service>
35+
36+
<service id="tntsearch.stop.word" class="TntSearch\Service\StopWord">
37+
<argument type="service" id="event_dispatcher"/>
38+
</service>
39+
40+
<service id="tntsearch.stemmer" class="TntSearch\Service\Stemmer">
41+
<argument type="service" id="event_dispatcher"/>
42+
</service>
43+
44+
<!--Indexation -->
45+
<service id="tntsearch.base.index" abstract="true">
46+
<argument type="service" id="tntsearch.provider"/>
47+
</service>
48+
49+
<service id="tntsearch.index.product" class="TntSearch\Index\Product" parent="tntsearch.base.index" shared="false">
50+
<tag name="tntsearch.index"/>
51+
</service>
52+
<service id="tntsearch.index.brand" class="TntSearch\Index\Brand" parent="tntsearch.base.index" shared="false">
53+
<tag name="tntsearch.index"/>
54+
</service>
55+
<service id="tntsearch.index.customer" class="TntSearch\Index\Customer" parent="tntsearch.base.index" shared="false">
56+
<tag name="tntsearch.index"/>
57+
</service>
58+
<service id="tntsearch.index.order" class="TntSearch\Index\Order" parent="tntsearch.base.index" shared="false">
59+
<tag name="tntsearch.index"/>
60+
</service>
61+
<service id="tntsearch.index.category" class="TntSearch\Index\Category" parent="tntsearch.base.index" shared="false">
62+
<tag name="tntsearch.index"/>
63+
</service>
64+
<service id="tntsearch.index.content" class="TntSearch\Index\Content" parent="tntsearch.base.index" shared="false">
65+
<tag name="tntsearch.index"/>
66+
</service>
67+
<service id="tntsearch.index.folder" class="TntSearch\Index\Folder" parent="tntsearch.base.index" shared="false">
68+
<tag name="tntsearch.index"/>
69+
</service>
70+
71+
<!--Search -->
72+
<service id="tntsearch.search" class="TntSearch\Service\Search">
73+
<argument type="service" id="tntsearch.indexation.provider"/>
74+
<argument type="service" id="tntsearch.provider"/>
1875
</service>
1976
</services>
2077

@@ -23,9 +80,4 @@
2380
<tag name="hook.event_listener" event="module.configuration" type="back" method="onModuleConfiguration"/>
2481
</hook>
2582
</hooks>
26-
27-
<commands>
28-
<command class="TntSearch\Commands\GenerateIndexesCommand"/>
29-
</commands>
30-
31-
</config>
83+
</config>

Config/module.xml

+5-1
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,16 @@
1313
<language>en_US</language>
1414
<language>fr_FR</language>
1515
</languages>
16-
<version>0.7.3</version>
16+
<version>1.0.0</version>
1717
<authors>
1818
<author>
1919
<name>Nicolas Barbey</name>
2020
<email>nbarbey@openstudio.com</email>
2121
</author>
22+
<author>
23+
<name>Bertrand tourlonias</name>
24+
<email>btourlonias@openstudio.com</email>
25+
</author>
2226
<author>
2327
<name>Franck Allimant</name>
2428
<company>OpenStudio</company>

Config/routing.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
</route>
1010

1111
<route id="tntsearch.generate.indexes" path="/admin/module/TntSearch/generateIndexes">
12-
<default key="_controller">TntSearch\Controller\TntSearchController::generateIndexesAction</default>
12+
<default key="_controller">TntSearch\Controller\IndexationController::generateIndexesAction</default>
1313
</route>
1414

1515
<route id="tntsearch.update.config" path="/admin/module/TntSearch/update-configuration" methods="post">
16-
<default key="_controller">TntSearch\Controller\TntSearchController::updateConfigAction</default>
16+
<default key="_controller">TntSearch\Controller\IndexationController::updateConfigAction</default>
1717
</route>
1818
</routes>

Config/schema.xml

+1-24
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,5 @@
22
<database defaultIdMethod="native" name="thelia"
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
44
xsi:noNamespaceSchemaLocation="../../../core/vendor/thelia/propel/resources/xsd/database.xsd" >
5-
<!--
6-
See propel documentation on http://propelorm.org for all information about schema file
75

8-
<table name="product_rel" namespace="TntSearch\Model">
9-
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
10-
<column defaultValue="0" name="visible" required="true" type="TINYINT" />
11-
<column defaultValue="0" name="position" required="true" type="INTEGER" />
12-
<column name="title" size="255" type="VARCHAR" />
13-
<column name="description" type="CLOB" />
14-
<column name="chapo" type="LONGVARCHAR" />
15-
<column name="postscriptum" type="LONGVARCHAR" />
16-
<foreign-key foreignTable="product" name="fk_product_id" onDelete="CASCADE" onUpdate="RESTRICT">
17-
<reference foreign="id" local="product_id" />
18-
</foreign-key>
19-
<behavior name="timestampable" />
20-
<behavior name="i18n">
21-
<parameter name="i18n_columns" value="title, description, chapo, postscriptum" />
22-
</behavior>
23-
<behavior name="versionable">
24-
<parameter name="log_created_at" value="true" />
25-
<parameter name="log_created_by" value="true" />
26-
</behavior>
27-
</table>
28-
-->
29-
</database>
6+
</database>

Controller/TntSearchController.php Controller/IndexationController.php

+15-10
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,45 @@
22

33
namespace TntSearch\Controller;
44

5+
use Exception;
56
use Symfony\Component\Filesystem\Filesystem;
7+
use Symfony\Component\HttpFoundation\Response;
68
use Thelia\Controller\Admin\BaseAdminController;
79
use Thelia\Tools\URL;
8-
use TntSearch\Event\GenerateIndexesEvent;
10+
use TntSearch\Service\Provider\IndexationProvider;
911
use TntSearch\TntSearch;
1012

11-
class TntSearchController extends BaseAdminController
13+
class IndexationController extends BaseAdminController
1214
{
13-
public function updateConfigAction()
15+
public function updateConfigAction(): Response
1416
{
15-
$onTheFlyUpdate = (bool) $this->getRequest()->get('on-the-fly-update', false);
17+
$onTheFlyUpdate = (bool)$this->getRequest()->get('on-the-fly-update', false);
1618

1719
TntSearch::setConfigValue(TntSearch::ON_THE_FLY_UPDATE, $onTheFlyUpdate);
1820

1921
return $this->generateRedirect(URL::getInstance()->absoluteUrl("/admin/module/TntSearch"));
2022
}
2123

22-
public function generateIndexesAction()
24+
/**
25+
* @return Response
26+
*/
27+
public function generateIndexesAction(): Response
2328
{
2429
$fs = new Filesystem();
2530

31+
/** @var IndexationProvider $indexationProvider */
32+
$indexationProvider = $this->getContainer()->get('tntsearch.indexation.provider');
33+
2634
if (is_dir(TntSearch::INDEXES_DIR)) {
2735
$fs->remove(TntSearch::INDEXES_DIR);
2836
}
2937

3038
ini_set('max_execution_time', 3600);
3139

3240
try {
33-
$this->dispatch(
34-
GenerateIndexesEvent::GENERATE_INDEXES,
35-
new GenerateIndexesEvent()
36-
);
41+
$indexationProvider->indexAll();
3742

38-
} catch (\Exception $exception) {
43+
} catch (Exception $exception) {
3944
$error = $exception->getMessage();
4045

4146
return $this->generateRedirect(URL::getInstance()->absoluteUrl("/admin/module/TntSearch", ['error' => $error]));

Controller/SearchController.php

+3-13
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,17 @@
11
<?php
2-
/**
3-
* Created by PhpStorm.
4-
* User: nicolasbarbey
5-
* Date: 26/09/2019
6-
* Time: 16:20
7-
*/
82

93
namespace TntSearch\Controller;
104

115
use Thelia\Controller\Admin\BaseAdminController;
12-
use Thelia\Core\Thelia;
6+
use Thelia\Core\HttpFoundation\Response;
137

148
class SearchController extends BaseAdminController
159
{
1610
/**
17-
* @return \Thelia\Core\HttpFoundation\Response
11+
* @return Response
1812
*/
19-
public function searchAdminAction()
13+
public function searchAdminAction(): Response
2014
{
21-
if (version_compare(Thelia::THELIA_VERSION, '2.4.0-alpha2', 'lt')) {
22-
return $this->render('tntSearch/search2_3_4');
23-
}
24-
2515
return $this->render('tntSearch/search');
2616
}
2717
}

Event/GenerateIndexesEvent.php

-16
This file was deleted.

0 commit comments

Comments
 (0)