mirror of
https://github.com/Codappix/search_core.git
synced 2024-11-22 11:56:12 +01:00
TASK: Update docs
Document new configuration options and adjust configuration where necessary.
This commit is contained in:
parent
3e2e889e27
commit
dfde4b8f6b
9 changed files with 103 additions and 36 deletions
|
@ -24,7 +24,7 @@ Currently only :ref:`Elasticsearch` is provided.
|
||||||
Indexing
|
Indexing
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The indexing is done by one of the available indexer. It should be possible to define the indexer to
|
The indexing is done by one of the available indexer. For each identifier it's possible to define
|
||||||
use for certain document types. Also it should be possible to write custom indexer to use.
|
the indexer to use. Also it's possible to write custom indexer to use.
|
||||||
|
|
||||||
Currently only the :ref:`TcaIndexer` is provided.
|
Currently only the :ref:`TcaIndexer` is provided.
|
||||||
|
|
|
@ -96,8 +96,8 @@ The following settings are available. For each setting its documented which conn
|
||||||
|
|
||||||
.. _configuration_options_index:
|
.. _configuration_options_index:
|
||||||
|
|
||||||
index
|
Indexing
|
||||||
^^^^^
|
^^^^^^^^
|
||||||
|
|
||||||
Holds settings regarding the indexing, e.g. of TYPO3 records, to search services.
|
Holds settings regarding the indexing, e.g. of TYPO3 records, to search services.
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ Configured as::
|
||||||
settings {
|
settings {
|
||||||
indexing {
|
indexing {
|
||||||
identifier {
|
identifier {
|
||||||
indexer = Fully Qualified Classname
|
indexer = FullyQualifiedClassname
|
||||||
// the settings
|
// the settings
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -161,3 +161,51 @@ options are available:
|
||||||
|
|
||||||
Make sure to prefix all fields with the corresponding table name. The selection from
|
Make sure to prefix all fields with the corresponding table name. The selection from
|
||||||
database will contain joins and can lead to SQL errors if a field exists in multiple tables.
|
database will contain joins and can lead to SQL errors if a field exists in multiple tables.
|
||||||
|
|
||||||
|
.. _mapping:
|
||||||
|
|
||||||
|
``mapping``
|
||||||
|
"""""""""""
|
||||||
|
|
||||||
|
Used by: Elasticsearch connection while indexing.
|
||||||
|
|
||||||
|
Define mapping for Elasticsearch, have a look at the official docs: https://www.elastic.co/guide/en/elasticsearch/reference/5.2/mapping.html
|
||||||
|
You are able to define the mapping for each property / columns.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
plugin.tx_searchcore.settings.indexing.tt_content.mapping {
|
||||||
|
CType {
|
||||||
|
type = keyword
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
The above example will define the ``CType`` field of ``tt_content`` as ``type: keyword``. This
|
||||||
|
makes building a facet possible.
|
||||||
|
|
||||||
|
|
||||||
|
.. _configuration_options_search:
|
||||||
|
|
||||||
|
Searching
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
|
.. _facets:
|
||||||
|
|
||||||
|
``facets``
|
||||||
|
"""""""""""
|
||||||
|
|
||||||
|
Used by: Elasticsearch connection while building search query.
|
||||||
|
|
||||||
|
Define aggregations for Elasticsearch, have a look at the official docs: https://www.elastic.co/guide/en/elasticsearch/reference/5.2/search-aggregations-bucket-terms-aggregation.html
|
||||||
|
Currently only the term facet is provided.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
plugin.tx_searchcore.settings.searching.facets {
|
||||||
|
contentTypes {
|
||||||
|
field = CType
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
The above example will provide a facet with options for all found ``CType`` results together
|
||||||
|
with a count.
|
||||||
|
|
|
@ -22,5 +22,9 @@ The connection is configurable through the following options:
|
||||||
|
|
||||||
* :ref:`port`
|
* :ref:`port`
|
||||||
|
|
||||||
|
* :ref:`mapping`
|
||||||
|
|
||||||
|
* :ref:`facets`
|
||||||
|
|
||||||
.. _elastic Elasticsearch: https://www.elastic.co/products/elasticsearch
|
.. _elastic Elasticsearch: https://www.elastic.co/products/elasticsearch
|
||||||
.. _elastica: http://elastica.io/
|
.. _elastica: http://elastica.io/
|
||||||
|
|
|
@ -32,9 +32,10 @@ Then setup your system::
|
||||||
|
|
||||||
git clone git@github.com:DanielSiepmann/search_core.git \
|
git clone git@github.com:DanielSiepmann/search_core.git \
|
||||||
&& cd search_core \
|
&& cd search_core \
|
||||||
&& export typo3DatabaseName="searchcoretest62" \
|
&& export typo3DatabaseName="searchcoretest76" \
|
||||||
&& export TYPO3_VERSION="~6.2" \
|
&& export TYPO3_VERSION="~7.6" \
|
||||||
&& make install \
|
&& make install \
|
||||||
|
&& make unitTests \
|
||||||
&& make functionalTests
|
&& make functionalTests
|
||||||
|
|
||||||
If all tests are okay, start your work.
|
If all tests are okay, start your work.
|
||||||
|
@ -42,8 +43,8 @@ If all tests are okay, start your work.
|
||||||
If you are working with multiple TYPO3 versions make sure to export `typo3DatabaseName` and
|
If you are working with multiple TYPO3 versions make sure to export `typo3DatabaseName` and
|
||||||
`TYPO3_VERSION` in your environment like::
|
`TYPO3_VERSION` in your environment like::
|
||||||
|
|
||||||
export typo3DatabaseName="searchcoretest76"
|
export typo3DatabaseName="searchcoretest62"
|
||||||
export TYPO3_VERSION="~7.6"
|
export TYPO3_VERSION="~6.2"
|
||||||
|
|
||||||
Also run the install command for each version before running any tests. Only this will make sure you
|
Also run the install command for each version before running any tests. Only this will make sure you
|
||||||
are testing against the actual TYPO3 Version and database scheme.
|
are testing against the actual TYPO3 Version and database scheme.
|
||||||
|
|
|
@ -13,7 +13,7 @@ Indexing
|
||||||
Indexing data to Elasticsearch is provided. The extension delivers an indexer for TCA with zero
|
Indexing data to Elasticsearch is provided. The extension delivers an indexer for TCA with zero
|
||||||
configuration needs. Still it's possible to configure the indexer.
|
configuration needs. Still it's possible to configure the indexer.
|
||||||
|
|
||||||
Own indexer are not possible yet, but will.
|
Also custom classes can be used as indexers.
|
||||||
|
|
||||||
.. _features_search:
|
.. _features_search:
|
||||||
|
|
||||||
|
@ -24,6 +24,9 @@ Currently all fields are searched for a single search input.
|
||||||
|
|
||||||
Also multiple filter are supported. Filtering results by fields for string contents.
|
Also multiple filter are supported. Filtering results by fields for string contents.
|
||||||
|
|
||||||
|
Even facets / aggregates are now possible. Therefore a mapping has to be defined in TypoScript for
|
||||||
|
indexing, and the facets itself while searching.
|
||||||
|
|
||||||
.. _features_planned:
|
.. _features_planned:
|
||||||
|
|
||||||
Planned
|
Planned
|
||||||
|
@ -31,11 +34,5 @@ Planned
|
||||||
|
|
||||||
The following features are currently planned and will be integrated:
|
The following features are currently planned and will be integrated:
|
||||||
|
|
||||||
#. Mapping Configuration
|
#. Pagination
|
||||||
Allowing to configure the whole mapping, to define type of input, e.g. integer, keyword.
|
Add a pagination to search results, to allow users to walk through all results.
|
||||||
|
|
||||||
|
|
||||||
#. Facets / Aggregates
|
|
||||||
Based on the mapping configuration, facets will be configurable and fetched. Therefore mapping is
|
|
||||||
required and we will adjust the result set to be of a custom model providing all information in a
|
|
||||||
more clean way.
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ Installation
|
||||||
|
|
||||||
The extension can be installed through composer::
|
The extension can be installed through composer::
|
||||||
|
|
||||||
composer require "leonmrni/search_core dev-feature/integrate-elasticsearch"
|
composer require "leonmrni/search_core dev-master as 1.0.x-dev"
|
||||||
|
|
||||||
or by `downloading`_ and placing it inside the :file:`typo3conf/ext`-Folder of your installation.
|
or by `downloading`_ and placing it inside the :file:`typo3conf/ext`-Folder of your installation.
|
||||||
In that case you need to install all dependencies yourself. Dependencies are:
|
In that case you need to install all dependencies yourself. Dependencies are:
|
||||||
|
@ -16,8 +16,7 @@ In that case you need to install all dependencies yourself. Dependencies are:
|
||||||
:lines: 19-21
|
:lines: 19-21
|
||||||
:dedent: 8
|
:dedent: 8
|
||||||
|
|
||||||
|
|
||||||
Afterwards you need to enable the extension through the extension manager and include the static
|
Afterwards you need to enable the extension through the extension manager and include the static
|
||||||
typoscript setup.
|
TypoScript setup.
|
||||||
|
|
||||||
.. _downloading: https://github.com/DanielSiepmann/search_core/archive/feature/integrate-elasticsearch.zip
|
.. _downloading: https://github.com/DanielSiepmann/search_core/archive/master.zip
|
||||||
|
|
|
@ -18,7 +18,7 @@ reindexing.
|
||||||
Current state
|
Current state
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
This is still a very early alpha version. More information can be taken from Github at
|
This is still a very early beta version. More information can be taken from Github at
|
||||||
`current issues`_ and `current projects`_.
|
`current issues`_ and `current projects`_.
|
||||||
|
|
||||||
We are also focusing on Code Quality and Testing through `travis ci`_, `scrutinizer`_ and `codacy`_.
|
We are also focusing on Code Quality and Testing through `travis ci`_, `scrutinizer`_ and `codacy`_.
|
||||||
|
|
|
@ -11,12 +11,12 @@ Manual indexing
|
||||||
|
|
||||||
You can trigger indexing from CLI::
|
You can trigger indexing from CLI::
|
||||||
|
|
||||||
./typo3/cli_dispatch.phpsh extbase index:index --table 'tt_content'
|
./typo3/cli_dispatch.phpsh extbase index:index --identifier 'tt_content'
|
||||||
|
|
||||||
This will index the table ``tt_content`` using the :ref:`TcaIndexer`.
|
This will index the table ``tt_content`` using the :ref:`TcaIndexer`.
|
||||||
|
|
||||||
Only one table per call is available, to index multiple tables just make multiple calls.
|
Only one index per call is available, to run multiple indexers, just make multiple calls.
|
||||||
The tables have to be white listed through :ref:`allowedTables` option.
|
The indexers have to be defined in TypoScript via :ref:`configuration_options_index`.
|
||||||
|
|
||||||
.. _usage_auto_indexing:
|
.. _usage_auto_indexing:
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ Auto indexing
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Indexing is done through hooks every time an record is changed.
|
Indexing is done through hooks every time an record is changed.
|
||||||
The tables have to be white listed through :ref:`allowedTables` option.
|
The tables have to be configured via :ref:`configuration_options_index`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -57,10 +57,28 @@ Filter
|
||||||
Thanks to extbase mapping, filter are added to the form:
|
Thanks to extbase mapping, filter are added to the form:
|
||||||
|
|
||||||
.. code-block:: html
|
.. code-block:: html
|
||||||
:emphasize-lines: 3
|
|
||||||
|
|
||||||
<f:form name="searchRequest" object="{searchRequest}">
|
<!-- Case sensitive for fields of type keyword. -->
|
||||||
<f:form.textfield property="query" />
|
<f:form.textfield property="filter.exampleName" value="the value to match" />
|
||||||
<f:form.textfield property="filter.exampleName" value="the value to match" />
|
|
||||||
<f:form.submit value="search" />
|
.. _usage_searching_facets:
|
||||||
</f:form>
|
|
||||||
|
Facets
|
||||||
|
""""""
|
||||||
|
|
||||||
|
To add a facet as criteria for searching, use :ref:`usage_searching_filter`.
|
||||||
|
|
||||||
|
To display facet results use:
|
||||||
|
|
||||||
|
.. code-block:: html
|
||||||
|
|
||||||
|
<f:for each="{searchResult.facets}" as="facet">
|
||||||
|
<f:for each="{facet.options}" as="option">
|
||||||
|
<label for="{option.name}-desktop">
|
||||||
|
<f:form.checkbox value="{option.name}" property="filter.{facet.field}" />
|
||||||
|
{f:translate(id: 'search.filter.channel.{option.name}', default: option.name, extensionName: 'SitePackage')}
|
||||||
|
({option.count})
|
||||||
|
</label>
|
||||||
|
</f:for>
|
||||||
|
</f:for>
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ $EM_CONF[$_EXTKEY] = [
|
||||||
'title' => 'Search Core',
|
'title' => 'Search Core',
|
||||||
'description' => 'Search core for implementing various search types.',
|
'description' => 'Search core for implementing various search types.',
|
||||||
'category' => 'be',
|
'category' => 'be',
|
||||||
|
'clearCacheOnLoad' => 1,
|
||||||
'constraints' => [
|
'constraints' => [
|
||||||
'depends' => [
|
'depends' => [
|
||||||
'typo3' => '7.6.0-7.6.99',
|
'typo3' => '7.6.0-7.6.99',
|
||||||
|
@ -16,9 +17,8 @@ $EM_CONF[$_EXTKEY] = [
|
||||||
'Leonmrni\\SearchCore\\' => 'Classes',
|
'Leonmrni\\SearchCore\\' => 'Classes',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'state' => 'alpha',
|
'state' => 'beta',
|
||||||
'clearCacheOnLoad' => 1,
|
'version' => '1.0.0',
|
||||||
'author' => 'Daniel Siepmann',
|
'author' => 'Daniel Siepmann',
|
||||||
'author_email' => 'coding@daniel-siepmann.de',
|
'author_email' => 'coding@daniel-siepmann.de',
|
||||||
'version' => '1.0.0',
|
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in a new issue