Skip to content

Commit

Permalink
- specification updates, removing obsolete and wrong sections
Browse files Browse the repository at this point in the history
- moving aggregate fields to separate spec on distributed search

git-svn-id: http://svn.ez.no/svn/extensions/ezfind/ezp4/trunk@4368 49f50cf4-cce6-0310-bc1e-a21d999f3d8f
  • Loading branch information
Paul Borgermans committed Dec 20, 2009
1 parent 425ae0f commit cab12c8
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 75 deletions.
18 changes: 18 additions & 0 deletions doc/design/2.2/distributed-search.txt
@@ -0,0 +1,18 @@
On the fly refactoring: aggregator fields
=========================================

Define more aggregator fields and make them configurable in ezfind.ini

This speeds up searching in general and allows for multi-core searching with
possible different information sources

Note: these are not the final field names

* id (will be copied to from current ezfind unique id)
* date_modified
* date_created
* author
* uri
* tags
* name/title/any short field(s)
* body
18 changes: 0 additions & 18 deletions doc/design/2.2/filter-sort-facet-dedicated-fields.txt
Expand Up @@ -52,24 +52,6 @@ Disadvantages:
* when raw filters are used (templates), these need to be adapted to the
new suffixes

On the fly refactoring: aggregator fields
=========================================

Define more aggregator fields and make them configurable in ezfind.ini

This speeds up searching in general and allows for multi-core searching with
possible different information sources

Note: these are not the final field names

* id (will be copied to from current ezfind unique id)
* date_modified
* date_created
* author
* uri
* tags
* name/title/any short field(s)
* body


Solution overview
Expand Down
59 changes: 2 additions & 57 deletions doc/design/2.2/multi-lingual-improvements-with-multi-core.txt
Expand Up @@ -92,73 +92,18 @@ we can easily determine what language the doc is in.
eZSolr
++++++

New method: solrBaseFactory
'''''''''''''''''''''''''''
As explained in the eZSolrBase paragraph, this method returns the appropriate
eZSolrBase:
* If LanguageSearch.Multicore is disabled: eZSolrBase
* If LanguageSearch.MultiCore is enabled: eZSolrMultiCoreBase
The main search class deals with the distributed search aspects
For now, this is geared towards multiple indexes for languages.

eZSolrBase
++++++++++

a new class called eZSolrMultiCoreBased is added, inheriting eZSolrBase.

With the current approach, most methods in eZSolrBase would have been impacted,
and would have added an unwanted overhead to most search & indexing requests.
Minimal changes in eZSolrBase are still required in order to maintain a
consistent API, but this are minimal.

The eZSolrBase constructor is no longer supposed to be called directly, and
is replaced by::

eZSolr::solrBaseFactory()

This method will return either the standard, mono-core eZSolrBase, or if
multicore is enabled, an eZSolrMultiCoreBase.

Added: SolrURI()
''''''''''''''''
This method is added so that eZSolrBase and eZSolrMultiCore base maintain a
common API. It is very simple for eZSolrBase, as it only returns the solr URI.

It gets more useful in eZSolrMultiCoreBase

Added: pushElevateConfiguration
'''''''''''''''''''''''''''''''
Since elevate isn't supported in a multi-core environnement, this method has
been added so that it can be overriden in eZSolrBaseMultiCore. It is just an
abstract version of the previous raw code from elevate.

eZSolrMultiCoreBase
+++++++++++++++++++

This new class handles a number of solr cores in all operations.

The core of this class is the solrURL() method. Depending on a list of languages,
it will return a different solr URL, so that multi-core requests can be achieved.

Most other changes simply reflect what is required for multi-core:
* write requests need to be sent to each affected core. For example, an object
with eng-GB and fre-FR content must be sent to the fre-FR and eng-GB cores.
* read requests use the shards parameter through one core, and get aggregate
search results.

The consequence is that a languageCodes parameter has been added to most methods
who communicate with solr. Depending if the query is a write or a read one,
multiple or single calls will be performed.

Since one method can now perform multiple solr backend calls, the
validateUpdateResult method might be called several times in a row. The booleans
returned by these calls are aggregated, meaning that one failing result will
make the method return false. This will have to be improved in order to provide
more visibility.

pushElevateConfiguration
''''''''''''''''''''''''
Since elevate doesn't work with multicore yet, this method just doesn't do
anything in eZSolrMultiCoreBase.

Searching over multiple cores
-----------------------------

Expand Down

0 comments on commit cab12c8

Please sign in to comment.