Your SlideShare is downloading. ×
0
NOVEMBER 7, 2013
RAMP UP YOUR WEB EXPERIENCES USING
DRUPAL AND APACHE SOLR
peter.wolanin@acquia.com
drupal.org/user/49851 (pwolanin)

Peter...
My Agenda
Expose you to Drupal as a free enterprise CMS / WAF
Describe some of the advantages that come from a large
innov...
Overview of Content
Why are organizations standardizing on Drupal?
Drupal integration with Apache Solr
Integrated content ...
Inside Many Large
Organizations,
the Web Is Broken

5
Standardize on Drupal As Platform

Market Presence !
Global Adoption! ! !
Massively Extensible
Broad Community ! !

!
!
!
...
Drupal Delivers Rich, Integrated Experiences
Microsite

Intranet

•
•
•
•

Open, flexible architecture
Build a wide range o...
A Truly Agile Platform

February
2012

Pinterest hits
10M unique visitors

March
2012

New Drupal module
created for site ...
Apache Solr Integration with Drupal
Five years of
integration
At least 20,000
sites using Solr
Active community
of contrib...
Solr Integration Challenges Are Already Solved
The most important - content indexing
Facets, sorting, and highlighting
Int...
Drupal Entities are Content + Data
Nodes are the basic content entity
The entity system is extensible can represent any da...
Dynamic Content (Node) Types Enriched with
Dynamic Data Fields
Site builders can define as many content types as needed
in ...
13
Module Has a Pipeline for Indexing Drupal
Content to Solr
Drupal entities are processed into one (or more)
document object...
15
Dynamic Data Needs Dynamic Schema Fields
Dyanimc content types and their data fields are defined in
the UI without writing c...
<!-- Regular text (without processing) can be stored in a string field-->
<dynamicField name="ss_*" type="string" indexed=...
Entity Metadata Gives Automatic Facets"
Content types
Taxonomy terms per field
Content authors
Posted and modified dates
Tex...
Enable the Modules

19
20
21
22
23
24
25
26
27
28
Fully Built Search Pages and Facets"
The Drupal integration allows you to build search pages
(including custom filtering) a...
Drupal Modules Implement hooks to Modify
Indexing and Display
HOOK_apachesolr_index_document_build($document,
$entity, $en...
A Query Object Is Used to Prepare and Run
Searches
HOOK_apachesolr_query_prepare($query)
$query->setParam('hl.fl', $field)...
Two Hooks For Changing the Query?
HOOK_apachesolr_query_prepare()
‣
‣

Invoked before $query is statically cached.
Add or ...
Example: Poor Manʼs “Entity” Extraction"
Erik Hatcher recently showed how to extract values in
Solr using keep words and r...
Adding A New Field With Matched Strings
/**
* Implements hook_apachesolr_index_document_build_node().
*/
function apacheso...
35
Adding A New Facet For Matched Strings
/**
* Implements hook_facetapi_facet_info().
*/
function apachesolr_key_phrases_fac...
37
To Wrap Up
Drupal has extensive Apache Solr integration, and is
highly customizable
The Drupal platform is widely adopted,...
Upcoming SlideShare
Loading in...5
×

Ramp Up Your Web Experiences Using Drupal and Apache Solr

2,538

Published on

Presented by Peter Wolanin, Momentum Specialist, Acquia, Inc.

Drupal and Apache Solr search are a potent combination in the move towards "digital experiences" online. It is behind a growing number of customized, personalized enterprise platforms for eCommerce, healthcare, physical retail and more. Drupal powers a growing portion of the web, and has been adopted especially by governments around the world, the music industry, media organizations, and retailers. If you have a new web project or and existing Drupal site, the combination of Drupal and Apache Solr is both powerful and easy to set up. The indexing workflow built into the Drupal integration module provides a broad range of automatic facets based on data fields on the Drupal content defined by site administrators. Drupal facilitates further customizations of the UI, indexing, custom facets, and boosting because of an open architecture that provides multiple opportunities for a minimal amount of custom code to alter the behavior. This session will provide a high-level overview of how the Drupal integration works, a tour of the UI configuration options, a few code snippets, and examples of successful Drupal sites using Apache Solr for search.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,538
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Ramp Up Your Web Experiences Using Drupal and Apache Solr"

  1. 1. NOVEMBER 7, 2013
  2. 2. RAMP UP YOUR WEB EXPERIENCES USING DRUPAL AND APACHE SOLR peter.wolanin@acquia.com drupal.org/user/49851 (pwolanin) Peter Wolanin Momentum Specialist @ Acquia, Inc.
  3. 3. My Agenda Expose you to Drupal as a free enterprise CMS / WAF Describe some of the advantages that come from a large innovative pool of contributors Explain how Drupal enables you to immediately use key Apache Solr features without investing in development Have you leave here convinced that you should consider using Drupal with Apache Solr for your next project so that you can deliver a better and more engaging site faster 3
  4. 4. Overview of Content Why are organizations standardizing on Drupal? Drupal integration with Apache Solr Integrated content indexing Automatic generation of facets UI configuration of search Easy extensibility of Drupal/Solr integration code 4
  5. 5. Inside Many Large Organizations, the Web Is Broken 5
  6. 6. Standardize on Drupal As Platform Market Presence ! Global Adoption! ! ! Massively Extensible Broad Community ! ! ! ! ! ! 1,500,000+ sites 228 countries 16,000+ modules 1,000,000+ members Active Development! ! 17,000+ developers 6
  7. 7. Drupal Delivers Rich, Integrated Experiences Microsite Intranet • • • • Open, flexible architecture Build a wide range of sites Repeatable deployment patterns Enables effective shared services model between IT & marketing Corp-com site 7 Main Website Microsite Product Site Community Platform Main Website
  8. 8. A Truly Agile Platform February 2012 Pinterest hits 10M unique visitors March 2012 New Drupal module created for site usersʼ “pinned” images 8 April 2012 15 Drupal sites go live with Pinterest integration
  9. 9. Apache Solr Integration with Drupal Five years of integration At least 20,000 sites using Solr Active community of contributors 9
  10. 10. Solr Integration Challenges Are Already Solved The most important - content indexing Facets, sorting, and highlighting Integrated with More Like This and spell-check Optionally enable content access permissions by indexing documents with data and filtering Solr results based on the current user Works with Solr 1.4.x, 3.5.x, 3.6.x, 4.x 10
  11. 11. Drupal Entities are Content + Data Nodes are the basic content entity The entity system is extensible can represent any data Examples of data stored within Drupal entities ‣ ‣ ‣ Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Text Node 7 Node 8 Node 9 Geographic location Node reference 11
  12. 12. Dynamic Content (Node) Types Enriched with Dynamic Data Fields Site builders can define as many content types as needed in the UI Each content type can have many associated data fields defined in the UI and with configurable rendering Data fields from content can be re-used across the site in listing, cross-referencing, and recombination 12
  13. 13. 13
  14. 14. Module Has a Pipeline for Indexing Drupal Content to Solr Drupal entities are processed into one (or more) document objects Each document is converted to XML and sent to Solr. Document object Node object XML string title nid type entity_type label entity_id bundle Drupal callbacks & hooks 14 <doc> <field <field <field <field </doc> name="entity_type">node</field> name="label">Hello Drupal</field> name="entity_id">101</field> name="bundle">session</field>
  15. 15. 15
  16. 16. Dynamic Data Needs Dynamic Schema Fields Dyanimc content types and their data fields are defined in the UI without writing code Since the data structure is user-defined, data fields are mapped into dynamic schema fields Non-default mapping can be added in code A standard module-provided schema.xml and solrconfig.xml minimizes setup and maintenance 16
  17. 17. <!-- Regular text (without processing) can be stored in a string field--> <dynamicField name="ss_*" type="string" indexed="true" stored="true" multiValued="false"/> <dynamicField name="sm_*" type="string" indexed="true" stored="true" multiValued="true"/> <!-- Normal text fields are for full text - the relevance of a match depends on the length of the text --> <dynamicField name="ts_*" type="text" indexed="true" stored="true" multiValued="false" termVectors="true"/> <dynamicField name="tm_*" type="text" indexed="true" stored="true" multiValued="true" termVectors="true"/> <!-- These text fields omit norms - useful for extracted text like taxonomy_names --> <dynamicField name="tos_*" type="text" indexed="true" stored="true" multiValued="false" termVectors="true" omitNorms="true"/> <dynamicField name="tom_*" type="text" indexed="true" stored="true" multiValued="true" termVectors="true" omitNorms="true"/> 17
  18. 18. Entity Metadata Gives Automatic Facets" Content types Taxonomy terms per field Content authors Posted and modified dates Text and numbers selected via select list/radios/check boxes 18
  19. 19. Enable the Modules 19
  20. 20. 20
  21. 21. 21
  22. 22. 22
  23. 23. 23
  24. 24. 24
  25. 25. 25
  26. 26. 26
  27. 27. 27
  28. 28. 28
  29. 29. Fully Built Search Pages and Facets" The Drupal integration allows you to build search pages (including custom filtering) and facets with no coding Tune boosts, change query fields, and apply other configuration per “environment” (one or more search pages reference each environment) If you need deeper control, you can easily write code to change the interaction with Solr, or write custom searches 29
  30. 30. Drupal Modules Implement hooks to Modify Indexing and Display HOOK_apachesolr_index_document_build($document, $entity, $entity_type, $env_id) By creating a Drupal module (in PHP), you can implement module and theme “hooks” to extend or alter Drupal behavior. Change or replace the data normally indexed. Modify the search results and their appearance. 30
  31. 31. A Query Object Is Used to Prepare and Run Searches HOOK_apachesolr_query_prepare($query) $query->setParam('hl.fl', $field); $keys = $query->getParam('q'); $response = $query->search(); 31
  32. 32. Two Hooks For Changing the Query? HOOK_apachesolr_query_prepare() ‣ ‣ Invoked before $query is statically cached. Add or remove sorting options visible to the user. HOOK_apachesolr_query_alter() ‣ ‣ ‣ Invoked after $query is statically cached. Useful for applying operations the user shouldnʼt have the ability to alter. For example, node access filters. 32
  33. 33. Example: Poor Manʼs “Entity” Extraction" Erik Hatcher recently showed how to extract values in Solr using keep words and regular expressions (Solr 4.4+) http://searchhub.org/2013/06/27/poor-mans-entityextraction-with-solr/ By shifting this work to a Drupal module, I can make it easy to configure and deploy for an existing site. module code: https://drupal.org/sandbox/pwolanin/2129005 33
  34. 34. Adding A New Field With Matched Strings /** * Implements hook_apachesolr_index_document_build_node(). */ function apachesolr_key_phrases_apachesolr_index_document_build_node ($document, $entity, $env_id) { $key_phrases = variable_get('key_phrases', array()); if ($key_phrases && $document->content) { foreach ($key_phrases as $phrase) { if (stripos($document->content, $phrase) !== FALSE) { $document->addField('sm_key_phrases', $phrase); } } } } 34
  35. 35. 35
  36. 36. Adding A New Facet For Matched Strings /** * Implements hook_facetapi_facet_info(). */ function apachesolr_key_phrases_facetapi_facet_info($searcher_info) { $facets = array(); if ('apachesolr' == $searcher_info['adapter']) { $facets['sm_key_phrases'] = array( 'label' => t('Key phrases'), 'description' => t('Filter by key phrases.'), ); } return $facets; } 36
  37. 37. 37
  38. 38. To Wrap Up Drupal has extensive Apache Solr integration, and is highly customizable The Drupal platform is widely adopted, and the Drupal community drives rapid innovation Acquia provides Enterprise Drupal support and a network of partners Acquia includes a secure, hosted Solr index with every support subscription 38
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×