1

Does anyone know if it possible to use SI4T so that a published category and its keywords (and metadata) can be indexed?

From the look of it I think I'm going to need my own deployer/storage extension as SI4T seems to be based around TBBs and templates which won't apply if I'm publishing the taxonomy directly.

USE CASE

We're using Elasticsearch and SI4T (with a custom indexer) as our standard site search. We're also going to leverage Elasticsearch for other dynamic functionality - e.g news listings etc.

Quick overview of what I'm trying to do:

I have airport data (47K rows) that includes an airport code, long/lat, county code and region code. The plan is to push this data straight into an Elasticsearch index (outside of Tridion so no airport schema/component) to drive some Google Map functionality - a Destination Guide - where a user can use the autocomplete to type in a name and on the map we show a pin an airport they select.

An extension to this has come in whereby the autocomplete should allow a user to type in a country or city as well as airport name - if a country/city is selected the map will then show all airport pins within that area and a small piece of country/city information, stuff like:

  • Summary blurb
  • Population
  • Currency
  • ISO Code

Its this stuff I was going to model as a metadata on a Country category that held countries and cities. This way keywords can be localised in Tridion and metadata translated as well as the Description field for country/city names:

  • EU
    • United Kingdom <-- Metadata
      • London <-- Metadata
      • Manchester <-- Metadata

(There'll be a separate process to manage translated airport names)

The plan was to publish this category into Elasticsearch from Tridion such that our backend query can search for any matching country/city names and be able lookup airports via the ISO code (which matches the airport country or region code). Each translated site/publication would then have a complete translated list of country/city information, managed from within Tridion.

As we where already using SI4T, my first thought was does this have the capability to pass a published taxonomy into your index.

5
  • What are you using the taxonomy for? Depending on your scenario you may be better off publishing keywords as part of Component metadata and then faceting on the relevant fields.
    – Ant P
    Commented Jun 23, 2014 at 18:42
  • Updated with use case.
    – Neil
    Commented Jun 24, 2014 at 8:10
  • 1
    It seems like you are putting quite a lot of content into keyword meta, it might be better to put this in a component (linked from kw meta), published as a DCP. This would be searchable (you can index DCPs) and additionally you are future proof if you want to treat Country/City content as real content from a CMS point of view in the future (eg have a Country/City page, or create component links to a country or city)
    – Will Price
    Commented Jun 24, 2014 at 11:37
  • Any chance of open sourcing the Indexer Neil? Commented Dec 14, 2015 at 15:43
  • I can but ask Rob!
    – Neil
    Commented Dec 14, 2015 at 15:50

2 Answers 2

2

As Will says, putting all that content in components (I would use DCPs for that), tagging them with keywords and indexing those DCPs with the keyword field would do the trick and is the recommended way to go with SI4T, but also without SI4T.

Pushing metadata of keywords into your search engine is not really possible with SI4T. The reason for that is because the Tridion Storage Layer does not support fetching Keyword Metadata upon first time publish of a Taxonomy. This would mean that an editor always has to publish the Taxonomy twice and this surely will lead to much frustration and functional impairment.

That said, if you really need to stick to keyword metadata, you might as well write a service to fetch keywords and metadata from the broker directly.

4

It sounds like your question is about having SI4T index a whole category when it is published from the CMS. This is not possible, as only content from publishing pages and components is indexed (the storage extension works by extracting indexing directives from the rendered output of the page or dynamic component presentation - when you publish a category there is no such rendered output).

You could, as you mention create your own storage extension to push keywords and their metadata into the index, but there may be other ways to achieve your goals - what use case are you trying to satisfy by indexing the category?

Worth noting is that SI4T can index content->keyword relationships, if you have a custom field mapping set up from keyword field(s) to a particular field(s) in your index, it will index the keyword id(s) in the field(s) for that content item (page or DCP), enabling you to do faceted searches. You might be able to achieve your goals by combining this with a simple page to publish your category as JSON or XML reference data (or using the taxonomy API to read the whole taxonomy from the broker database and caching it somewhere).

UPDATE: Check my comment on your question - DCPs could be the way to go..

1
  • Updated with use case.
    – Neil
    Commented Jun 24, 2014 at 8:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.