SlideShare ist ein Scribd-Unternehmen logo
By David Smiley
On February 2020
At a NEST Meetup
› A Principal Software Engineer at Salesforce
› Apache Lucene/Solr committer & PMC member
› Author of Solr Enterprise Search Server books
› Quiz: how many plugin types? ____
– … in Lucene & Solr combined?
– A class/interface whose implementation can be specified via
configuration
› Many more actual plugins exist
› Search platforms need to be pluggable
› Where do you find out about plugins today?
– Solr Ref Guide
– Colleagues
– Conferences, Meetups
– Blogs
– Search results
› Plugin sources
– built-in: Comes with Solr; no installation step
– contrib: Comes with Solr; need to install JARs(*)
– 3rd party: External; compile/download, install
› Place JARs into a suitable directory
– <solr-home>/lib
– <solr-core>/lib
– solrconfig.xml <lib … />
Sometimes necessary:
– server/solr-webapp/webapp/WEB-INF/lib
Jetty/JVM plugins:
– server/lib and server/lib/ext
› Read documentation for how to configure
› Sometimes a plugin is always configured the same:
– <queryparser name=“foo”
class=“com.acme.FooQParser”/>
› Often not:
– TokenFilters: to which field type? Where in chain?
Consider RPM, Docker Hub, IDEs, many other examples
Why:
› Discoverability via a common registry
› Ease of installation via CLI commands
› And especially the 2nd order effects…
(break up the Solr monolith)
› Some built-in plugins become contribs
– Better security
– Fewer dependencies of Solr core (JAR hell deterrent)
– Usable in older Solr releases
– Ex: SolrTextTagger?
› Some contrib plugins become 3rd-party
– Better security
– Less burden on maintaining Solr (test time, docs, dev)
– Smaller Solr distribution / Docker image
– Separate release cycles from Solr
– Ex: DIH, Velocity/Solritas
› Support common plugin types
› A public plugin registry
› CLI & Web API commands
– to install a plugin
– to configure a plugin!
– to update a plugin (new version)
› Plugin management at runtime
› Plugin dependency isolation (JAR hell deterrent)
Easy to find
& install plugins!
Once upon a time…
› 2013-08, SOLR-5103, Grant Ingersoll
– Mostly discussion
› 2015-02 SOLR-7073, Noble Paul
– runtimeLib & .system collection / blob store
› 2017-05, SOLR-10665, Jan Høydahl
– Designs, POC, PF4J based, conf talk, … abandoned
› 2019-07, SOLR-13661, Noble Paul & Ishan C.
– Wider feedback; committed to v8.4
New in 8.4
› Plugin type
– A base class/interface that Lucene/Solr loads dynamically
› Plugin
– An implementation of a plugin type
› Package
– A collection of plugins, plus metadata
› Repository
– A web location (URL) hosting plugins
› Enable package manager
› Add a repository
› List packages
› Install a package
› Deploy a package
– CLI vs manual
› https://github.com/erikhatcher/solritas/
Likely more typical than automated…
<requestHandler name="/myhandler”
class="mypackage:full.path.to.MyClass” />
curl "http://localhost:8983/api/collections/collection1/
config/params" 
-H 'Content-type:application/json’ 
-d "{set: {PKG_VERSIONS: {mypackage: '1.0.0'}}}"
› Where packages (JARs) are actually placed
› Distributed peer-to-peer synchronized directory
› Potential for other uses
– Large resources – machine learning models
› Compare to “.system” collection…
› Discuss: Good, bad, …
› Update a plugin live, in-place
– No core reload!
› Discuss: Good, bad, …
› Everything is deemed experimental
› Support more plugin types
– Schema plugins!
– Also hot-loading for more types; some can’t do this
› Convert contribs to a local plugin repository
› Create an official/primary plugin repository
› Better documentation
– See https://lucene.apache.org/solr/guide/8_4/package-
manager.html
› Who runs the plugin repository / decides inclusion
› Self-configuring plugins
› Hot-loading plugins
› Assign different package versions to different collections
› How a configSet declares it needs a package
› Eliminating <lib/> in solrconfig.xml
› Security (keys, signing, opting-out)
Resources:
› Ref guide
– https://lucene.apache.org/solr/guide/8_4/package-manager-
internals.html
› Solritas packaging example
– https://github.com/erikhatcher/solritas/
› Activate Conference Presentation
– https://youtu.be/YQBhEojf358
“Dynamic Plugin Loading & Safe Mode Solr”

Weitere ähnliche Inhalte

Ähnlich wie 2020-02 Solr's New Plugin System

Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5
israelekpo
 
2018 - CertiFUNcation - Olivier Dobberka: Apache Solr for Newbies
2018 - CertiFUNcation - Olivier Dobberka: Apache Solr for Newbies2018 - CertiFUNcation - Olivier Dobberka: Apache Solr for Newbies
2018 - CertiFUNcation - Olivier Dobberka: Apache Solr for Newbies
TYPO3 CertiFUNcation
 
Omeka sc4l
Omeka sc4lOmeka sc4l
eZ Find workshop: advanced insights & recipes
eZ Find workshop: advanced insights & recipeseZ Find workshop: advanced insights & recipes
eZ Find workshop: advanced insights & recipes
Paul Borgermans
 
Suche mit Apache Lucene & Co.
Suche mit Apache Lucene & Co.Suche mit Apache Lucene & Co.
Suche mit Apache Lucene & Co.
inovex GmbH
 
Building Enterprise Search Engines using Open Source Technologies
Building Enterprise Search Engines using Open Source TechnologiesBuilding Enterprise Search Engines using Open Source Technologies
Building Enterprise Search Engines using Open Source Technologies
Rahul Singh
 
Building Enterprise Search Engines using Open Source Technologies
Building Enterprise Search Engines using Open Source TechnologiesBuilding Enterprise Search Engines using Open Source Technologies
Building Enterprise Search Engines using Open Source Technologies
Anant Corporation
 
Solr search engine with multiple table relation
Solr search engine with multiple table relationSolr search engine with multiple table relation
Solr search engine with multiple table relation
Jay Bharat
 
Drupal7 and Apache Solr
Drupal7 and Apache SolrDrupal7 and Apache Solr
Drupal7 and Apache Solr
Nikolay Ignatov
 
DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)
DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)
DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)
Tim Donohue
 
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
datascienceiqss
 
Upgrading to Alfresco 6
Upgrading to Alfresco 6Upgrading to Alfresco 6
Upgrading to Alfresco 6
Angel Borroy López
 
Solr 101
Solr 101Solr 101
Solr 101
Findwise
 
Oslo Solr MeetUp March 2012 - Solr4 alpha
Oslo Solr MeetUp March 2012 - Solr4 alphaOslo Solr MeetUp March 2012 - Solr4 alpha
Oslo Solr MeetUp March 2012 - Solr4 alpha
Cominvent AS
 
How to debug IoT Agents
How to debug IoT AgentsHow to debug IoT Agents
How to debug IoT Agents
Fernando Lopez Aguilar
 
Getting started faster with LucidWorks for Solr
Getting started faster with LucidWorks for SolrGetting started faster with LucidWorks for Solr
Getting started faster with LucidWorks for Solr
Lucidworks (Archived)
 
Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014
Alexandre Rafalovitch
 
Taking eZ Find beyond full-text search
Taking eZ Find beyond  full-text searchTaking eZ Find beyond  full-text search
Taking eZ Find beyond full-text search
Paul Borgermans
 
Friends of Solr - Nutch & HDFS
Friends of Solr - Nutch & HDFSFriends of Solr - Nutch & HDFS
Friends of Solr - Nutch & HDFS
Saumitra Srivastav
 
Rails and the Apache SOLR Search Engine
Rails and the Apache SOLR Search EngineRails and the Apache SOLR Search Engine
Rails and the Apache SOLR Search Engine
David Keener
 

Ähnlich wie 2020-02 Solr's New Plugin System (20)

Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5Building Intelligent Search Applications with Apache Solr and PHP5
Building Intelligent Search Applications with Apache Solr and PHP5
 
2018 - CertiFUNcation - Olivier Dobberka: Apache Solr for Newbies
2018 - CertiFUNcation - Olivier Dobberka: Apache Solr for Newbies2018 - CertiFUNcation - Olivier Dobberka: Apache Solr for Newbies
2018 - CertiFUNcation - Olivier Dobberka: Apache Solr for Newbies
 
Omeka sc4l
Omeka sc4lOmeka sc4l
Omeka sc4l
 
eZ Find workshop: advanced insights & recipes
eZ Find workshop: advanced insights & recipeseZ Find workshop: advanced insights & recipes
eZ Find workshop: advanced insights & recipes
 
Suche mit Apache Lucene & Co.
Suche mit Apache Lucene & Co.Suche mit Apache Lucene & Co.
Suche mit Apache Lucene & Co.
 
Building Enterprise Search Engines using Open Source Technologies
Building Enterprise Search Engines using Open Source TechnologiesBuilding Enterprise Search Engines using Open Source Technologies
Building Enterprise Search Engines using Open Source Technologies
 
Building Enterprise Search Engines using Open Source Technologies
Building Enterprise Search Engines using Open Source TechnologiesBuilding Enterprise Search Engines using Open Source Technologies
Building Enterprise Search Engines using Open Source Technologies
 
Solr search engine with multiple table relation
Solr search engine with multiple table relationSolr search engine with multiple table relation
Solr search engine with multiple table relation
 
Drupal7 and Apache Solr
Drupal7 and Apache SolrDrupal7 and Apache Solr
Drupal7 and Apache Solr
 
DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)
DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)
DSpace RoadMap and Vision (at 2013 OAI8 DSpace User Group)
 
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
 
Upgrading to Alfresco 6
Upgrading to Alfresco 6Upgrading to Alfresco 6
Upgrading to Alfresco 6
 
Solr 101
Solr 101Solr 101
Solr 101
 
Oslo Solr MeetUp March 2012 - Solr4 alpha
Oslo Solr MeetUp March 2012 - Solr4 alphaOslo Solr MeetUp March 2012 - Solr4 alpha
Oslo Solr MeetUp March 2012 - Solr4 alpha
 
How to debug IoT Agents
How to debug IoT AgentsHow to debug IoT Agents
How to debug IoT Agents
 
Getting started faster with LucidWorks for Solr
Getting started faster with LucidWorks for SolrGetting started faster with LucidWorks for Solr
Getting started faster with LucidWorks for Solr
 
Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014
 
Taking eZ Find beyond full-text search
Taking eZ Find beyond  full-text searchTaking eZ Find beyond  full-text search
Taking eZ Find beyond full-text search
 
Friends of Solr - Nutch & HDFS
Friends of Solr - Nutch & HDFSFriends of Solr - Nutch & HDFS
Friends of Solr - Nutch & HDFS
 
Rails and the Apache SOLR Search Engine
Rails and the Apache SOLR Search EngineRails and the Apache SOLR Search Engine
Rails and the Apache SOLR Search Engine
 

Mehr von David Smiley

H-Hypermap Heatmap Analytics at Scale
H-Hypermap Heatmap Analytics at ScaleH-Hypermap Heatmap Analytics at Scale
H-Hypermap Heatmap Analytics at Scale
David Smiley
 
2016-01 Lucene Solr spatial in 2015, NYC Meetup
2016-01 Lucene Solr spatial in 2015, NYC Meetup2016-01 Lucene Solr spatial in 2015, NYC Meetup
2016-01 Lucene Solr spatial in 2015, NYC Meetup
David Smiley
 
Populate your Search index, NEST 2016-01
Populate your Search index, NEST 2016-01Populate your Search index, NEST 2016-01
Populate your Search index, NEST 2016-01
David Smiley
 
Lucene/Solr spatial in 2015
Lucene/Solr spatial in 2015Lucene/Solr spatial in 2015
Lucene/Solr spatial in 2015
David Smiley
 
2014 11 lucene spatial temporal update
2014 11 lucene spatial temporal update2014 11 lucene spatial temporal update
2014 11 lucene spatial temporal update
David Smiley
 
Solr: 4 big features
Solr: 4 big featuresSolr: 4 big features
Solr: 4 big features
David Smiley
 
Lucene 4 spatial
Lucene 4 spatialLucene 4 spatial
Lucene 4 spatial
David Smiley
 

Mehr von David Smiley (7)

H-Hypermap Heatmap Analytics at Scale
H-Hypermap Heatmap Analytics at ScaleH-Hypermap Heatmap Analytics at Scale
H-Hypermap Heatmap Analytics at Scale
 
2016-01 Lucene Solr spatial in 2015, NYC Meetup
2016-01 Lucene Solr spatial in 2015, NYC Meetup2016-01 Lucene Solr spatial in 2015, NYC Meetup
2016-01 Lucene Solr spatial in 2015, NYC Meetup
 
Populate your Search index, NEST 2016-01
Populate your Search index, NEST 2016-01Populate your Search index, NEST 2016-01
Populate your Search index, NEST 2016-01
 
Lucene/Solr spatial in 2015
Lucene/Solr spatial in 2015Lucene/Solr spatial in 2015
Lucene/Solr spatial in 2015
 
2014 11 lucene spatial temporal update
2014 11 lucene spatial temporal update2014 11 lucene spatial temporal update
2014 11 lucene spatial temporal update
 
Solr: 4 big features
Solr: 4 big featuresSolr: 4 big features
Solr: 4 big features
 
Lucene 4 spatial
Lucene 4 spatialLucene 4 spatial
Lucene 4 spatial
 

Kürzlich hochgeladen

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
flufftailshop
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 

Kürzlich hochgeladen (20)

Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 

2020-02 Solr's New Plugin System

  • 1. By David Smiley On February 2020 At a NEST Meetup
  • 2. › A Principal Software Engineer at Salesforce › Apache Lucene/Solr committer & PMC member › Author of Solr Enterprise Search Server books
  • 3. › Quiz: how many plugin types? ____ – … in Lucene & Solr combined? – A class/interface whose implementation can be specified via configuration › Many more actual plugins exist › Search platforms need to be pluggable
  • 4. › Where do you find out about plugins today? – Solr Ref Guide – Colleagues – Conferences, Meetups – Blogs – Search results › Plugin sources – built-in: Comes with Solr; no installation step – contrib: Comes with Solr; need to install JARs(*) – 3rd party: External; compile/download, install
  • 5. › Place JARs into a suitable directory – <solr-home>/lib – <solr-core>/lib – solrconfig.xml <lib … /> Sometimes necessary: – server/solr-webapp/webapp/WEB-INF/lib Jetty/JVM plugins: – server/lib and server/lib/ext
  • 6. › Read documentation for how to configure › Sometimes a plugin is always configured the same: – <queryparser name=“foo” class=“com.acme.FooQParser”/> › Often not: – TokenFilters: to which field type? Where in chain?
  • 7. Consider RPM, Docker Hub, IDEs, many other examples Why: › Discoverability via a common registry › Ease of installation via CLI commands › And especially the 2nd order effects… (break up the Solr monolith)
  • 8. › Some built-in plugins become contribs – Better security – Fewer dependencies of Solr core (JAR hell deterrent) – Usable in older Solr releases – Ex: SolrTextTagger? › Some contrib plugins become 3rd-party – Better security – Less burden on maintaining Solr (test time, docs, dev) – Smaller Solr distribution / Docker image – Separate release cycles from Solr – Ex: DIH, Velocity/Solritas
  • 9. › Support common plugin types › A public plugin registry › CLI & Web API commands – to install a plugin – to configure a plugin! – to update a plugin (new version) › Plugin management at runtime › Plugin dependency isolation (JAR hell deterrent) Easy to find & install plugins!
  • 10. Once upon a time… › 2013-08, SOLR-5103, Grant Ingersoll – Mostly discussion › 2015-02 SOLR-7073, Noble Paul – runtimeLib & .system collection / blob store › 2017-05, SOLR-10665, Jan Høydahl – Designs, POC, PF4J based, conf talk, … abandoned › 2019-07, SOLR-13661, Noble Paul & Ishan C. – Wider feedback; committed to v8.4
  • 12. › Plugin type – A base class/interface that Lucene/Solr loads dynamically › Plugin – An implementation of a plugin type › Package – A collection of plugins, plus metadata › Repository – A web location (URL) hosting plugins
  • 13. › Enable package manager › Add a repository › List packages › Install a package › Deploy a package – CLI vs manual
  • 15. Likely more typical than automated… <requestHandler name="/myhandler” class="mypackage:full.path.to.MyClass” /> curl "http://localhost:8983/api/collections/collection1/ config/params" -H 'Content-type:application/json’ -d "{set: {PKG_VERSIONS: {mypackage: '1.0.0'}}}"
  • 16. › Where packages (JARs) are actually placed › Distributed peer-to-peer synchronized directory › Potential for other uses – Large resources – machine learning models › Compare to “.system” collection… › Discuss: Good, bad, …
  • 17. › Update a plugin live, in-place – No core reload! › Discuss: Good, bad, …
  • 18. › Everything is deemed experimental › Support more plugin types – Schema plugins! – Also hot-loading for more types; some can’t do this › Convert contribs to a local plugin repository › Create an official/primary plugin repository › Better documentation – See https://lucene.apache.org/solr/guide/8_4/package- manager.html
  • 19. › Who runs the plugin repository / decides inclusion › Self-configuring plugins › Hot-loading plugins › Assign different package versions to different collections › How a configSet declares it needs a package › Eliminating <lib/> in solrconfig.xml › Security (keys, signing, opting-out)
  • 20. Resources: › Ref guide – https://lucene.apache.org/solr/guide/8_4/package-manager- internals.html › Solritas packaging example – https://github.com/erikhatcher/solritas/ › Activate Conference Presentation – https://youtu.be/YQBhEojf358 “Dynamic Plugin Loading & Safe Mode Solr”

Hinweis der Redaktion

  1. 114 via ResourceLoader 34 Classloader.forName Solr probably has a greater proportion of those abstractions.
  2. Most plugins, first section. Examples: JTS dependency… not really a 1st class plugin but 2nd order dependency. Examples: logger. Or SSL related thing.
  3. Consequently, there are some steps to do in your configuration.
  4. “Contentious” : subject to debate