Share » Learn » eZ Publish » Advanced development with eZ Find -...

Advanced development with eZ Find - part 1 : Datatypes in Solr and eZ Find

Monday 07 June 2010 8:05:08 am

  • Currently 5 out of 5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Step 4 : Understanding the Solr-side naming of fields

For this, we will have to brush-up the way eZ Find names the fields transmitted to Solr. Advanced usages and techniques for eZ Find require an in-depth understanding of the fields semantics and naming mechanism.

The /ezfind/classes/ezfsolrdocumentfieldbase.php class, or potentially inheriting classes when some complex datatypes are in use ( see my contribution for instance : ezfsolrdocumentfieldobjectrelation ), takes care of creating the Solr fied names, following precise semantics, detailed here :

Attributes names

Solr name :

attr_[contentattributename]_[contentattributetype],
example : 'attr_title_s'. Note the absence of the content class identifier, opening for nice perspectives like filtering on several content classes having identical names ( will be covered in a another post ).

Mapping in eZ Find's fetch function (in 'filter' for example) :

[contentclassname]/[contentattributename]/[contentsubattributename],
example 'article/title'. The content class name, 'article', is used as an additional filter when building the query. The 'title' is transformed into 'attr_title_s', the _s being infered from eZ Find's settings (see below)

Metadata names

Solr name :

meta_[metadataname]_[metadatatype], example : meta_class_identifier_s

Mapping in eZ Find's fetch function (for sorting for example) :

Internal usage, to sort on 'class_identifier' for instance.

Sub-attribute names (not used by default)

Solr name :

subattr_[contentattributename]-[contentsubattributename]_[contentsubattributetype], example : subattr_relatedimage-alttext_s

Natively, the subattribute concept is not or little used, because the standard state and features of eZ Publish does not require it massively. It however is here as an opening for advanced usages, and it is, for instance, a great tool to extend eZ Find and index additional fields.

As an example, check my contribution : ezfsolrdocumentfieldobjectrelation, indexing all attributes of an object's related objects, storing them as subattributes. This then opens for applying all sorts of operations to there subattributes (search, filtering, facetting), using the 'myclass/myattribute/mysubattribute' syntax.

The next posts in this series about eZ Find will explain how to leverage this mechanism, presenting the full portfolio of possible applications.

 

Printable

Printer Friendly version of the full article on one page with plain styles

Author(s)