FullTextSearch [Unreleased]

Maintainer(s): hfried
Supported by: Community

There are several fulltext search engines that work in a similar manner. They build indexes of denormalized data that is then searched through using some custom query syntax.

Traditionally, fulltext search connectors for SilverStripe have attempted to hide this design, instead presenting fulltext searching as an extension of the object model. However the disconnect between the fulltext search engine's design and the object model meant that searching was inefficient. The abstraction would also often break and it was hard to then figure out what was going on.

This module instead provides the ability to define those indexes and queries in PHP. The indexes are defined as a mapping between the SilverStripe object model and the connector-specific fulltext engine index model. This module then interrogates model metadata to build the specific index definition.

A basic or "standard" search might take a user's search-terms and attempt to match them to a document or set of documents directly, treating each as an entire block or string. A fulltext search on the other hand, searches on a pre-built index of terms, itself built from a set of documents, and as such is "indirectly" searching a set of documents. Doing things in this way gives a searching mechanism increased flexibility and power in the range of search-queries that are able to be performed.

SilverStripe does have some limited FullText search functionality, but it is limited to MySQL databases using its FULLTEXT index and is unable to build indexes of - and therefore search - the contents of user-uploaded SilverStripe File DataObjects such MS Word, MS Excel or PDFs for example.

This module is designed to add support for standalone, 3rd party full text search engines to SilverStripe. Unlike some other similar extensions for SilverStripe, this module attempts to tie-into SilverStripe's object model, rather than operating outside of it. It provides the ability to define those indexes and queries in PHP.

The indexes are defined as a mapping between the SilverStripe object model and the connector-specific fulltext engine index model. This module then interrogates model metadata to build the specific index definition that becomes "query-able".

The module also hooks into the Sapphire framework in order to update indexes when models change and connectors then convert those index and query definitions into fulltext engine specific code.

The intent of this module is not to make changing fulltext search engines seamless. Where possible this module provides common interfaces ("connectors") to fulltext engine functionality, abstracting out common behaviour. However, each connector also offers its own extensions, and there is some behaviour (such as getting the fulltext search engines installed, configured and running) that each connector deals with itself, in a way best suited to that particular engine's design.

  • Solr connector out of the box
  • Ties into SilverStripe Object Model
  • User-uploaded files as SilverStripe File DataObjects are indexable and therefore searchable
  • Fulltext indexes rebuilt when SilverStripe models are updated (e.g. your site's page-content)

Release(s)

  • Latest release

    Version: [Unreleased]
    Date: 2012-12-20
    Compatible with: SilverStripe 3.0
    Download: No Download Available

    Git access:
    Branch: master
    Tag: HEAD

  • Latest master build

    To get a preview of our next release, download the latest build of unstable git master branch here. Please be careful: this is more likely to contain bugs, especially on modules undergoing a lot of development.

    SHA hash: 6562ad2f2bed53df8eb1285d3f5da9fb20ecc066
    Build Date: 2013-02-22
    Download: silverstripe-fulltextsearch-master-HEAD.tar.gz

    Unstable Git access: https://github.com/silverstripe-labs/silverstripe-fulltextsearch.git

 
 

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.