SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
Solr’s missing plugin ecosystem
Jan Høydahl
Cominvent AS
Agenda
• Intro
• Solr plugins today
• The improved plugin system
• Technical overview
• Recap
• Q & A
All images used are licensed for commercial re-use
3
• Jan Høydahl
• Norway, 45 years
• Cominvent AS
• Lucene/Solr committer & PMC
Telecom Fast ESP Solr Freelancer
1995 2000 2007 2017
17 years of Search
4
5
«The Monolith»
«Technology ecosystems are product
platforms defined by core components
made by the platform owner and
complemented by applications made by
autonomous companies in the periphery»
-ft.com/lexicon
Ecosystem
7
The Solr Ecosystem
developer
user
isv
Agenda
• Intro
• Solr plugins today
• What is a plugin
• Loading, distribution
• User poll
• The improved plugin system
• Technical overview
• Recap
• Q & A
Java classes pre-defined by 

Solr for extension

ZIP/JAR providing a

certain feature
Plugin - two levels
• Examples:
• QueryParser
• UpdateProcessor
• SearchComponent
• ResponseWriter
• TokenFilter
• …
10
What is a Solr plugin?
dataimport
11
Solr contribs
• Optional features bundled as separate JARs
• Released with Solr in the dist and contrib folders
• May contain one or more Java-level plugins
velocity
12
How are plugins loaded?
CLASSPATH SOLR_HOME/lib
WEB-INF/lib
<lib dir="${solr.install.dir}/contrib/velocity/lib" regex=".*.jar" />

<lib dir="${solr.install.dir}/dist/" regex="solr-velocity-d.*.jar" />

<requestHandler name="/browse" class="solr.SearchHandler" … />
Class Loader
ResourceLoader
13
14
Plugin Distribution
http://solr.cool
15
16
Who are you?
17
Pluginusage
18
Rate the following statements
Solr plugins are easy to discover
Solr plugins are easy to install
Solr plugins are easy to configure
Solr plugins are easy to upgrade
It is easy to match plugin to Solr version
I find a plugin for all my needs
It is easy to develop my own plugin
It is easy to distribute my own plugins
19
Top-3 priority features
20
Questions to plugin developers
We need a Solr Plugin SDK
All plugins belong in Apache GIT
Github is a better home for Solr plugins
Commercial plugins in the official repo?
The current plugin types are sufficient
Other languages than Java
Agenda
• Intro
• Solr plugins today
• The improved plugin system
• POC
• The end user perspective
• Deverloper perspective
• Solr product perspective
• Technical overview
• Recap
• Q & A
23
Proof of concept
• Integrated PF4J in Solr
• Design document
• SOLR-10665 with patch

and a download to try
• CLI (bin/solr plugin)
• Plugin repositories
24
Design goals
• User friendly and familiar
• Establish a plugin ecosystem
• Spark further modularisation
• Extensible and customisable
25
The end user perspective
Discover plugin Install plugin Stay up to dateDownload Solr
«Users download a very slim core without any contribs, huge analysers
or esoteric query parsers. A few megs…»
26
Downloading Solr
• 65% size reduction

140 —> 50 Mb*
• From 1min —> 20sec
• Escape the «kitchen sink»
• Room for more shaving!
Core Contribs Test-fw Kuromoji HDFS *After converting contribs etc to plugins
27
The end user experience
Discover plugin Install plugin Stay up to dateDownload Solr
«A new plugins tab in the Admin UI lists available official plugins as
well as community plugins, installable with a single click.»
28
Plugin Discovery
29
PluginInstall
30
The end user experience
Stay up to dateDiscover plugin Install pluginDownload Solr
«You will with a single command upgrade to the latest version that is
compatible with your Solr version»
31
CLI Usage - upgrade
32
Developer perspective
App Store

advantage
Simpler

documentation
Safe

upgrades
Free/

Premium
Visibility
Distribution
bin/solr plugin 

install foo
Version match
SHA checksum
PGP signature
Paid plugins
Try before buy
33
product/project perspective
Kitchen sink? Attract developers Modularity Licensing issues
Smaller core
Faster downloads
Sense of

community
New ext. points
Break out features
JIRA patch -> plugin
GPL dependencies
User decides
Agenda
• Intro
• Solr plugins today
• The improved plugin system
• Technical overview
• Choice of plugin framework
• The new plugin bundle
• Plugin repositories
• Challenges
• Recap
• Q & A
35
Choice of plugin framework
Heavy weight, intrusive
Jigsaw solves a different problem
Not yet released
Lightweight and customisable
Provides version, dependencies & repository
36
PF4J (Plugin Framework for Java)
«PF4J is an open
source, lightweight
plugin framework for
Java, with minimal
dependencies and
very extensible»
www.pf4j.org
37
The plugin bundle
• Defined by PF4J

• Simply «a JAR with a MANIFEST»
• Or a ZIP with MANIFEST & dependencies
• Lives in SOLR_HOME/plugins
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: decebal
Build-Jdk: 1.6.0_17
Plugin-Class: com.example.MyPlugin
Plugin-Dependencies: x, y, z
Plugin-Id: my-plugin
Plugin-Provider: John Doe
Plugin-Version: 0.0.1
MANIFEST.mf
<dependency org="org.pf4j" name="pf4j" rev="..." />
38
Example contrib --> plugin ZIP
analysis-extras-8.0.0.zip
39
40
Bootstrapping
Bootstrapping, class loading
SolrResourceLoader
ClassLoader
- lib/
- WEB-INF/lib/
- <lib/>
before
Bootstrapping, class loading
SolrResourceLoader
ClassLoader
- lib/
- WEB-INF/lib/
- <lib/>
PluginBundleClassLoader
PluginBundleManager
P1 P2 P3
1
2
findClass()
(parent first) parent
(parent last)
after
43
Plugin repositories
• -
• Any static website or folder
• Each repo defines a plugins.json file
<dependency org="org.pf4j" name="pf4j-update" rev="..." />
Solr version requirement
44
Supported repositories
dist.apache.org

+mirrors
solr-plugins/free

solr-plugins/paid
local
solr/plugins
• Official Apache

• Community
moderated

• User added repos

• Local file shares

• Manually installed
some.site
org/repo
/mnt/solr/repo
45
The Apache dist repo
dist.apache.org

+mirrors
• Custom PluginUpdateRepository
• (1) closest mirror for exact version
• (2) apache.org/dist
• (3) archive.apache.org/dist
• Validates SHA sum and PGP sig
46
Needs more research
• Multi version of dependency jars

• Distributed install across cluster

• Utilize runtimeLib / blob store?

• Plugin upgrade requires restart

• How to let plugins add UI menus
47
Future possibilities
• Collection declares plugin dependency

<dependency>my-plugin</dependency>

• Slim-JAR + 

• Auto load more components using SPI

• Plugin SDK with samples
pexels.com/photo/blackboard-business-chalkboard-concept-355988/CC0
48
Next steps
• Break up POC into smaller JIRAs
• Commit core support to master
• Split out a few contribs as plugins
• Release 7.x with plugin support
• Split out more features as plugins
• Currency FieldType
• Excel response writer
• Kuromoji japanese analyzer
• Test-framework?
pixabay.com/p-768642/Publicdomain
Agenda
• Intro
• Solr plugins today
• The improved plugin system
• Technical overview
• Recap
• Q & A
50
Recap
• Already modular
• «Kitchen sink»
• Hard to locate 3rd party plugins
• integration introduces:
• a well defined plugin bundle
• tooling to work with plugins
• an «App Store» approach to distribution
• A larger ecosystem!
51
Jan Høydahl
Thank You!
@cominvent
janhoy
SOLR-10665
Thank You
Extra slides
54
How pluggable are we - really?
55
Do you use Solr plugins today?
56
01
Preferred packaging format
57
Top-3 priority features (contd)
Not prioritised by anyone:
• A "plugin store" to purchase
commercial Solr plugins
• Plugins must be based on OSGI
• Plugins must be Jigsaw modules
58
«All plugins that I used are custom,because [there] doesn’t existanything that fit the needs, or I didn'tfind the plugin at research time»
«From a plugin-developer point of
view the greatest pain point is
keeping up with changes in
Lucene, occasionally even interface
changes between bug fix releases»
«Worst experience is to
always reinvent the wheel
for plugins after API
change in Lucene/Solr»
59
Plugin lifecycle
CREATED The manager has loaded the ZIP/JAR
DISABLED A plugin that will not be started.
May e.g. be do to Solr<—>Plugin version mismatch
STARTED Active plugin state, contributes extensions
STOPPED A plugin can be explicitly stopped, or implicitly
during upgrading (unload old, load new)
60
Implicit loading?
• Lucene Analysis plugins loaded with SPI
• Enables use of name, e.g synonym instead of class name
org.apache.lucene.analysis.synonym.SynonymFilterFactory
• Not exposed by Solr :-(
• Some UpdateProcessors are pre-initialized (7.0)
• Reference by well-defined name
• Statically defined, not for 3rd party URPs
• All others need to be explicitly configured

Mais conteúdo relacionado

Mais procurados

Performant Streaming in Production: Preventing Common Pitfalls when Productio...
Performant Streaming in Production: Preventing Common Pitfalls when Productio...Performant Streaming in Production: Preventing Common Pitfalls when Productio...
Performant Streaming in Production: Preventing Common Pitfalls when Productio...Databricks
 
C# as a System Language
C# as a System LanguageC# as a System Language
C# as a System LanguageScyllaDB
 
2022 COSCUP - Let's speed up your PostgreSQL services!.pptx
2022 COSCUP - Let's speed up your PostgreSQL services!.pptx2022 COSCUP - Let's speed up your PostgreSQL services!.pptx
2022 COSCUP - Let's speed up your PostgreSQL services!.pptxJosé Lin
 
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...Ryuichi Yasunaga
 
Orchestration Patterns for Microservices with Messaging by RabbitMQ
Orchestration Patterns for Microservices with Messaging by RabbitMQOrchestration Patterns for Microservices with Messaging by RabbitMQ
Orchestration Patterns for Microservices with Messaging by RabbitMQVMware Tanzu
 
SRE Conference 2022 - How to Build a Healthy On-Call Culture
SRE Conference 2022 - How to Build a Healthy On-Call CultureSRE Conference 2022 - How to Build a Healthy On-Call Culture
SRE Conference 2022 - How to Build a Healthy On-Call Culturesmalltown
 
Network Monitoring with The Dude and Whatsapp
Network Monitoring with The Dude and WhatsappNetwork Monitoring with The Dude and Whatsapp
Network Monitoring with The Dude and WhatsappGLC Networks
 
Choosing Mikrotik Platform x86 vs chr
Choosing Mikrotik Platform x86 vs chrChoosing Mikrotik Platform x86 vs chr
Choosing Mikrotik Platform x86 vs chrGLC Networks
 
Netflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesNetflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesEd Hunter
 
Security Monitoring with eBPF
Security Monitoring with eBPFSecurity Monitoring with eBPF
Security Monitoring with eBPFAlex Maestretti
 
Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Mark Dai
 
Linux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFBrendan Gregg
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageKernel TLV
 
How to Lock Down Apache Kafka and Keep Your Streams Safe
How to Lock Down Apache Kafka and Keep Your Streams SafeHow to Lock Down Apache Kafka and Keep Your Streams Safe
How to Lock Down Apache Kafka and Keep Your Streams Safeconfluent
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)Brendan Gregg
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDPDaniel T. Lee
 
Build enterprise wireless with CAPsMAN
Build enterprise wireless with CAPsMANBuild enterprise wireless with CAPsMAN
Build enterprise wireless with CAPsMANGLC Networks
 
05.2 virtio introduction
05.2 virtio introduction05.2 virtio introduction
05.2 virtio introductionzenixls2
 

Mais procurados (20)

Performant Streaming in Production: Preventing Common Pitfalls when Productio...
Performant Streaming in Production: Preventing Common Pitfalls when Productio...Performant Streaming in Production: Preventing Common Pitfalls when Productio...
Performant Streaming in Production: Preventing Common Pitfalls when Productio...
 
C# as a System Language
C# as a System LanguageC# as a System Language
C# as a System Language
 
2022 COSCUP - Let's speed up your PostgreSQL services!.pptx
2022 COSCUP - Let's speed up your PostgreSQL services!.pptx2022 COSCUP - Let's speed up your PostgreSQL services!.pptx
2022 COSCUP - Let's speed up your PostgreSQL services!.pptx
 
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
 
Orchestration Patterns for Microservices with Messaging by RabbitMQ
Orchestration Patterns for Microservices with Messaging by RabbitMQOrchestration Patterns for Microservices with Messaging by RabbitMQ
Orchestration Patterns for Microservices with Messaging by RabbitMQ
 
SRE Conference 2022 - How to Build a Healthy On-Call Culture
SRE Conference 2022 - How to Build a Healthy On-Call CultureSRE Conference 2022 - How to Build a Healthy On-Call Culture
SRE Conference 2022 - How to Build a Healthy On-Call Culture
 
Network Monitoring with The Dude and Whatsapp
Network Monitoring with The Dude and WhatsappNetwork Monitoring with The Dude and Whatsapp
Network Monitoring with The Dude and Whatsapp
 
Choosing Mikrotik Platform x86 vs chr
Choosing Mikrotik Platform x86 vs chrChoosing Mikrotik Platform x86 vs chr
Choosing Mikrotik Platform x86 vs chr
 
Netflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesNetflix SRE perf meetup_slides
Netflix SRE perf meetup_slides
 
Security Monitoring with eBPF
Security Monitoring with eBPFSecurity Monitoring with eBPF
Security Monitoring with eBPF
 
Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用Twitter 與 ELK 基本使用
Twitter 與 ELK 基本使用
 
Linux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPF
 
macvlan and ipvlan
macvlan and ipvlanmacvlan and ipvlan
macvlan and ipvlan
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
How to Lock Down Apache Kafka and Keep Your Streams Safe
How to Lock Down Apache Kafka and Keep Your Streams SafeHow to Lock Down Apache Kafka and Keep Your Streams Safe
How to Lock Down Apache Kafka and Keep Your Streams Safe
 
eBPF/XDP
eBPF/XDP eBPF/XDP
eBPF/XDP
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
Build enterprise wireless with CAPsMAN
Build enterprise wireless with CAPsMANBuild enterprise wireless with CAPsMAN
Build enterprise wireless with CAPsMAN
 
05.2 virtio introduction
05.2 virtio introduction05.2 virtio introduction
05.2 virtio introduction
 

Semelhante a Solr's missing plugin ecosystem

From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...Paul Withers
 
AD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension LibraryAD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension Librarypaidi_ed
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionStefan Schmidt
 
Plone pas.plugins.ldap user/group search
Plone pas.plugins.ldap user/group searchPlone pas.plugins.ldap user/group search
Plone pas.plugins.ldap user/group searchfredvd
 
Just the Job: Employing Solr for Recruitment Search -Charlie Hull
Just the Job: Employing Solr for Recruitment Search -Charlie Hull Just the Job: Employing Solr for Recruitment Search -Charlie Hull
Just the Job: Employing Solr for Recruitment Search -Charlie Hull lucenerevolution
 
Solr security frameworks
Solr security frameworksSolr security frameworks
Solr security frameworksAnshum Gupta
 
Mediawiki to Confluence migration
Mediawiki to Confluence migrationMediawiki to Confluence migration
Mediawiki to Confluence migrationNils Hofmeister
 
OpenNTF - The Lotus Notes and Domino Open Source Organization
OpenNTF - The Lotus Notes and Domino Open Source OrganizationOpenNTF - The Lotus Notes and Domino Open Source Organization
OpenNTF - The Lotus Notes and Domino Open Source OrganizationBruce Elgort
 
Modern Module Development
Modern Module DevelopmentModern Module Development
Modern Module Development_morgan
 
Extending ZF & Extending With ZF
Extending ZF & Extending With ZFExtending ZF & Extending With ZF
Extending ZF & Extending With ZFRalph Schindler
 
Improved Search With Lucene 4.0 - NOVA Lucene/Solr Meetup
Improved Search With Lucene 4.0 - NOVA Lucene/Solr MeetupImproved Search With Lucene 4.0 - NOVA Lucene/Solr Meetup
Improved Search With Lucene 4.0 - NOVA Lucene/Solr Meetuprcmuir
 
Why It’s Important to Contribute to Open-Source Projects | Keysight Connect #10
Why It’s Important to Contribute to Open-Source Projects | Keysight Connect #10Why It’s Important to Contribute to Open-Source Projects | Keysight Connect #10
Why It’s Important to Contribute to Open-Source Projects | Keysight Connect #10IxiaRomania
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKWolfgang Weigend
 
Improved Search with Lucene 4.0 - Robert Muir
Improved Search with Lucene 4.0 - Robert MuirImproved Search with Lucene 4.0 - Robert Muir
Improved Search with Lucene 4.0 - Robert Muirlucenerevolution
 
Apache Solr 5.0 and beyond
Apache Solr 5.0 and beyondApache Solr 5.0 and beyond
Apache Solr 5.0 and beyondAnshum Gupta
 
Artifacts management with DevOps
Artifacts management with DevOpsArtifacts management with DevOps
Artifacts management with DevOpsChen-Tien Tsai
 

Semelhante a Solr's missing plugin ecosystem (20)

From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
 
AD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension LibraryAD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension Library
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & Distribution
 
Plone pas.plugins.ldap user/group search
Plone pas.plugins.ldap user/group searchPlone pas.plugins.ldap user/group search
Plone pas.plugins.ldap user/group search
 
Just the Job: Employing Solr for Recruitment Search -Charlie Hull
Just the Job: Employing Solr for Recruitment Search -Charlie Hull Just the Job: Employing Solr for Recruitment Search -Charlie Hull
Just the Job: Employing Solr for Recruitment Search -Charlie Hull
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 
EnterpriseSearch
EnterpriseSearchEnterpriseSearch
EnterpriseSearch
 
Automated testing 101
Automated testing 101Automated testing 101
Automated testing 101
 
Building foundations
Building foundationsBuilding foundations
Building foundations
 
Solr security frameworks
Solr security frameworksSolr security frameworks
Solr security frameworks
 
Mediawiki to Confluence migration
Mediawiki to Confluence migrationMediawiki to Confluence migration
Mediawiki to Confluence migration
 
OpenNTF - The Lotus Notes and Domino Open Source Organization
OpenNTF - The Lotus Notes and Domino Open Source OrganizationOpenNTF - The Lotus Notes and Domino Open Source Organization
OpenNTF - The Lotus Notes and Domino Open Source Organization
 
Modern Module Development
Modern Module DevelopmentModern Module Development
Modern Module Development
 
Extending ZF & Extending With ZF
Extending ZF & Extending With ZFExtending ZF & Extending With ZF
Extending ZF & Extending With ZF
 
Improved Search With Lucene 4.0 - NOVA Lucene/Solr Meetup
Improved Search With Lucene 4.0 - NOVA Lucene/Solr MeetupImproved Search With Lucene 4.0 - NOVA Lucene/Solr Meetup
Improved Search With Lucene 4.0 - NOVA Lucene/Solr Meetup
 
Why It’s Important to Contribute to Open-Source Projects | Keysight Connect #10
Why It’s Important to Contribute to Open-Source Projects | Keysight Connect #10Why It’s Important to Contribute to Open-Source Projects | Keysight Connect #10
Why It’s Important to Contribute to Open-Source Projects | Keysight Connect #10
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
 
Improved Search with Lucene 4.0 - Robert Muir
Improved Search with Lucene 4.0 - Robert MuirImproved Search with Lucene 4.0 - Robert Muir
Improved Search with Lucene 4.0 - Robert Muir
 
Apache Solr 5.0 and beyond
Apache Solr 5.0 and beyondApache Solr 5.0 and beyond
Apache Solr 5.0 and beyond
 
Artifacts management with DevOps
Artifacts management with DevOpsArtifacts management with DevOps
Artifacts management with DevOps
 

Mais de Cominvent AS

Scaling search with Solr Cloud
Scaling search with Solr CloudScaling search with Solr Cloud
Scaling search with Solr CloudCominvent AS
 
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 alphaCominvent AS
 
Improving the Solr Update Chain
Improving the Solr Update ChainImproving the Solr Update Chain
Improving the Solr Update ChainCominvent AS
 
First oslo solr community meetup lightning talk janhoy
First oslo solr community meetup lightning talk janhoyFirst oslo solr community meetup lightning talk janhoy
First oslo solr community meetup lightning talk janhoyCominvent AS
 
Dagens Næringslivs overgang til Lucene/Solr søk
Dagens Næringslivs overgang til Lucene/Solr søkDagens Næringslivs overgang til Lucene/Solr søk
Dagens Næringslivs overgang til Lucene/Solr søkCominvent AS
 
Key topics when migrating from FAST to Solr, EuroCon 2010
Key topics when migrating from FAST to Solr, EuroCon 2010Key topics when migrating from FAST to Solr, EuroCon 2010
Key topics when migrating from FAST to Solr, EuroCon 2010Cominvent AS
 
Oslo Enterprise MeetUp May 12th 2010 - Jan Høydahl
Oslo Enterprise MeetUp May 12th 2010 - Jan HøydahlOslo Enterprise MeetUp May 12th 2010 - Jan Høydahl
Oslo Enterprise MeetUp May 12th 2010 - Jan HøydahlCominvent AS
 
Open source breakfast norge findwise
Open source breakfast norge findwiseOpen source breakfast norge findwise
Open source breakfast norge findwiseCominvent AS
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asCominvent AS
 
Migrating Fast to Solr
Migrating Fast to SolrMigrating Fast to Solr
Migrating Fast to SolrCominvent AS
 
Cominvent AS company Presentation
Cominvent AS company PresentationCominvent AS company Presentation
Cominvent AS company PresentationCominvent AS
 

Mais de Cominvent AS (11)

Scaling search with Solr Cloud
Scaling search with Solr CloudScaling search with Solr Cloud
Scaling search with Solr Cloud
 
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
 
Improving the Solr Update Chain
Improving the Solr Update ChainImproving the Solr Update Chain
Improving the Solr Update Chain
 
First oslo solr community meetup lightning talk janhoy
First oslo solr community meetup lightning talk janhoyFirst oslo solr community meetup lightning talk janhoy
First oslo solr community meetup lightning talk janhoy
 
Dagens Næringslivs overgang til Lucene/Solr søk
Dagens Næringslivs overgang til Lucene/Solr søkDagens Næringslivs overgang til Lucene/Solr søk
Dagens Næringslivs overgang til Lucene/Solr søk
 
Key topics when migrating from FAST to Solr, EuroCon 2010
Key topics when migrating from FAST to Solr, EuroCon 2010Key topics when migrating from FAST to Solr, EuroCon 2010
Key topics when migrating from FAST to Solr, EuroCon 2010
 
Oslo Enterprise MeetUp May 12th 2010 - Jan Høydahl
Oslo Enterprise MeetUp May 12th 2010 - Jan HøydahlOslo Enterprise MeetUp May 12th 2010 - Jan Høydahl
Oslo Enterprise MeetUp May 12th 2010 - Jan Høydahl
 
Open source breakfast norge findwise
Open source breakfast norge findwiseOpen source breakfast norge findwise
Open source breakfast norge findwise
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent as
 
Migrating Fast to Solr
Migrating Fast to SolrMigrating Fast to Solr
Migrating Fast to Solr
 
Cominvent AS company Presentation
Cominvent AS company PresentationCominvent AS company Presentation
Cominvent AS company Presentation
 

Último

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 

Último (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Solr's missing plugin ecosystem

  • 1. Solr’s missing plugin ecosystem Jan Høydahl Cominvent AS
  • 2. Agenda • Intro • Solr plugins today • The improved plugin system • Technical overview • Recap • Q & A All images used are licensed for commercial re-use
  • 3. 3 • Jan Høydahl • Norway, 45 years • Cominvent AS • Lucene/Solr committer & PMC Telecom Fast ESP Solr Freelancer 1995 2000 2007 2017 17 years of Search
  • 4. 4
  • 6. «Technology ecosystems are product platforms defined by core components made by the platform owner and complemented by applications made by autonomous companies in the periphery» -ft.com/lexicon Ecosystem
  • 8. Agenda • Intro • Solr plugins today • What is a plugin • Loading, distribution • User poll • The improved plugin system • Technical overview • Recap • Q & A
  • 9. Java classes pre-defined by 
 Solr for extension
 ZIP/JAR providing a
 certain feature Plugin - two levels
  • 10. • Examples: • QueryParser • UpdateProcessor • SearchComponent • ResponseWriter • TokenFilter • … 10 What is a Solr plugin?
  • 11. dataimport 11 Solr contribs • Optional features bundled as separate JARs • Released with Solr in the dist and contrib folders • May contain one or more Java-level plugins velocity
  • 12. 12 How are plugins loaded? CLASSPATH SOLR_HOME/lib WEB-INF/lib <lib dir="${solr.install.dir}/contrib/velocity/lib" regex=".*.jar" />
 <lib dir="${solr.install.dir}/dist/" regex="solr-velocity-d.*.jar" />
 <requestHandler name="/browse" class="solr.SearchHandler" … /> Class Loader ResourceLoader
  • 13. 13
  • 15. 15
  • 18. 18 Rate the following statements Solr plugins are easy to discover Solr plugins are easy to install Solr plugins are easy to configure Solr plugins are easy to upgrade It is easy to match plugin to Solr version I find a plugin for all my needs It is easy to develop my own plugin It is easy to distribute my own plugins
  • 20. 20 Questions to plugin developers We need a Solr Plugin SDK All plugins belong in Apache GIT Github is a better home for Solr plugins Commercial plugins in the official repo? The current plugin types are sufficient Other languages than Java
  • 21. Agenda • Intro • Solr plugins today • The improved plugin system • POC • The end user perspective • Deverloper perspective • Solr product perspective • Technical overview • Recap • Q & A
  • 22.
  • 23. 23 Proof of concept • Integrated PF4J in Solr • Design document • SOLR-10665 with patch
 and a download to try • CLI (bin/solr plugin) • Plugin repositories
  • 24. 24 Design goals • User friendly and familiar • Establish a plugin ecosystem • Spark further modularisation • Extensible and customisable
  • 25. 25 The end user perspective Discover plugin Install plugin Stay up to dateDownload Solr «Users download a very slim core without any contribs, huge analysers or esoteric query parsers. A few megs…»
  • 26. 26 Downloading Solr • 65% size reduction
 140 —> 50 Mb* • From 1min —> 20sec • Escape the «kitchen sink» • Room for more shaving! Core Contribs Test-fw Kuromoji HDFS *After converting contribs etc to plugins
  • 27. 27 The end user experience Discover plugin Install plugin Stay up to dateDownload Solr «A new plugins tab in the Admin UI lists available official plugins as well as community plugins, installable with a single click.»
  • 30. 30 The end user experience Stay up to dateDiscover plugin Install pluginDownload Solr «You will with a single command upgrade to the latest version that is compatible with your Solr version»
  • 31. 31 CLI Usage - upgrade
  • 32. 32 Developer perspective App Store
 advantage Simpler
 documentation Safe
 upgrades Free/
 Premium Visibility Distribution bin/solr plugin 
 install foo Version match SHA checksum PGP signature Paid plugins Try before buy
  • 33. 33 product/project perspective Kitchen sink? Attract developers Modularity Licensing issues Smaller core Faster downloads Sense of
 community New ext. points Break out features JIRA patch -> plugin GPL dependencies User decides
  • 34. Agenda • Intro • Solr plugins today • The improved plugin system • Technical overview • Choice of plugin framework • The new plugin bundle • Plugin repositories • Challenges • Recap • Q & A
  • 35. 35 Choice of plugin framework Heavy weight, intrusive Jigsaw solves a different problem Not yet released Lightweight and customisable Provides version, dependencies & repository
  • 36. 36 PF4J (Plugin Framework for Java) «PF4J is an open source, lightweight plugin framework for Java, with minimal dependencies and very extensible» www.pf4j.org
  • 37. 37 The plugin bundle • Defined by PF4J
 • Simply «a JAR with a MANIFEST» • Or a ZIP with MANIFEST & dependencies • Lives in SOLR_HOME/plugins Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: Apache Maven Built-By: decebal Build-Jdk: 1.6.0_17 Plugin-Class: com.example.MyPlugin Plugin-Dependencies: x, y, z Plugin-Id: my-plugin Plugin-Provider: John Doe Plugin-Version: 0.0.1 MANIFEST.mf <dependency org="org.pf4j" name="pf4j" rev="..." />
  • 38. 38 Example contrib --> plugin ZIP analysis-extras-8.0.0.zip
  • 39. 39
  • 42. Bootstrapping, class loading SolrResourceLoader ClassLoader - lib/ - WEB-INF/lib/ - <lib/> PluginBundleClassLoader PluginBundleManager P1 P2 P3 1 2 findClass() (parent first) parent (parent last) after
  • 43. 43 Plugin repositories • - • Any static website or folder • Each repo defines a plugins.json file <dependency org="org.pf4j" name="pf4j-update" rev="..." /> Solr version requirement
  • 44. 44 Supported repositories dist.apache.org
 +mirrors solr-plugins/free
 solr-plugins/paid local solr/plugins • Official Apache
 • Community moderated
 • User added repos
 • Local file shares
 • Manually installed some.site org/repo /mnt/solr/repo
  • 45. 45 The Apache dist repo dist.apache.org
 +mirrors • Custom PluginUpdateRepository • (1) closest mirror for exact version • (2) apache.org/dist • (3) archive.apache.org/dist • Validates SHA sum and PGP sig
  • 46. 46 Needs more research • Multi version of dependency jars
 • Distributed install across cluster
 • Utilize runtimeLib / blob store?
 • Plugin upgrade requires restart
 • How to let plugins add UI menus
  • 47. 47 Future possibilities • Collection declares plugin dependency
 <dependency>my-plugin</dependency>
 • Slim-JAR + 
 • Auto load more components using SPI
 • Plugin SDK with samples pexels.com/photo/blackboard-business-chalkboard-concept-355988/CC0
  • 48. 48 Next steps • Break up POC into smaller JIRAs • Commit core support to master • Split out a few contribs as plugins • Release 7.x with plugin support • Split out more features as plugins • Currency FieldType • Excel response writer • Kuromoji japanese analyzer • Test-framework? pixabay.com/p-768642/Publicdomain
  • 49. Agenda • Intro • Solr plugins today • The improved plugin system • Technical overview • Recap • Q & A
  • 50. 50 Recap • Already modular • «Kitchen sink» • Hard to locate 3rd party plugins • integration introduces: • a well defined plugin bundle • tooling to work with plugins • an «App Store» approach to distribution • A larger ecosystem!
  • 54. 54 How pluggable are we - really?
  • 55. 55 Do you use Solr plugins today?
  • 57. 57 Top-3 priority features (contd) Not prioritised by anyone: • A "plugin store" to purchase commercial Solr plugins • Plugins must be based on OSGI • Plugins must be Jigsaw modules
  • 58. 58 «All plugins that I used are custom,because [there] doesn’t existanything that fit the needs, or I didn'tfind the plugin at research time» «From a plugin-developer point of view the greatest pain point is keeping up with changes in Lucene, occasionally even interface changes between bug fix releases» «Worst experience is to always reinvent the wheel for plugins after API change in Lucene/Solr»
  • 59. 59 Plugin lifecycle CREATED The manager has loaded the ZIP/JAR DISABLED A plugin that will not be started. May e.g. be do to Solr<—>Plugin version mismatch STARTED Active plugin state, contributes extensions STOPPED A plugin can be explicitly stopped, or implicitly during upgrading (unload old, load new)
  • 60. 60 Implicit loading? • Lucene Analysis plugins loaded with SPI • Enables use of name, e.g synonym instead of class name org.apache.lucene.analysis.synonym.SynonymFilterFactory • Not exposed by Solr :-( • Some UpdateProcessors are pre-initialized (7.0) • Reference by well-defined name • Statically defined, not for 3rd party URPs • All others need to be explicitly configured