SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
SCHEMALESS SOLR
AND THE SOLR SCHEMA REST API

Steve Rowe
Twitter: @steven_a_rowe

Senior Software Engineer, LucidWorks
Who am I?
• 
• 
• 
• 

LucidWorks employee
Lucene/Solr committer since 2010
JFlex committer since 2008
Previously at the Center for Natural Language Processing
at Syracuse University’s iSchool (School of Information)

•  Twitter: @steven_a_rowe
Schemaless Solr
• 

As of version 4.4, Solr can operate in
schemaless mode:
–  No need to pre-configure fields in the
schema
–  As documents are indexed, previously
unknown fields are automatically added
to the schema
–  Field types are auto-detected from a
limited set of basic types:
•  Long, Double, Boolean, Date, Text
(default)
•  All are multi-valued
–  Works in standalone Solr and SolrCloud

• 

Solr features used to implement
schemaless mode:
–  Managed schema
•  Required for runtime
schema modification
–  Field value class guessing
•  Parsers attempt to detect
the Java class of Stringvalued field content
–  Automatic schema field
addition
•  Java class(es) mapped to
schema field type
The slide about the nature and utility of schemalessness
• 
• 

• 

“Schemaless” does not mean that there is no schema
Search applications need schemas to support non-trivial document models
–  No schema needed when there is only one field, or only one field type, i.e. all
fields share:
•  Document & query processing, including analysis
•  Index features & format
•  Similarity implementation
•  (etc.)
–  Otherwise, search apps need to manage per-field processing configuration (i.e.
a schema) to consistently index documents and effectively serve queries
So what does “schemaless” mean for Solr?
–  No up-front schema configuration required
–  Schema discovery: document structure is either not fixed or not fully known
Dynamic fields
• 
• 

Convention over configuration
Glob-like patterns match field names with field types
!

<dynamicField name="*_i" type="int" indexed="true” stored="true"/>!
<fieldType name="int" class="solr.TrieIntField"!
precisionStep="0" positionIncrementGap="0"/>!
!

• 
• 
• 
• 

Dynamic fields solve the problem of assigning field types to unknown fields by
inferring a field’s type from its name
By contrast, Solr’s schemaless mode infers an unknown field’s type from its value
or values
These two approaches are complementary
The Solr schemaless example defines a number of dynamic fields, including the
*_i ! int mapping above
Schemaless mode example
From example/example-schemaless/solr/collection1/conf/schema.xml:
!

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />!
<field name="_version_" type="long" indexed="true" stored="true"/>!

From example/exampledocs/books.csv:
id,cat,name,price,inStock,author,series_t,sequence_i,genre_s!
0441385532,book,Jhereg,7.95,false,Steven Brust,Vlad Taltos,1,fantasy!
...!

!
$ cd example && java -Dsolr.solr.home=example-schemaless/solr -jar start.jar!
!

$ cd exampledocs && java -Dtype=text/csv -jar post.jar books.csv!
!

SimplePostTool version 1.5!
Posting files to base url http://localhost:8983/solr/update using content-type text/csv..!
POSTing file books.csv!
1 files indexed.!
COMMITting Solr index changes to http://localhost:8983/solr/update..!
Time spent: 0:00:00.147!
Schemaless mode example
$ curl http://localhost:8983/solr/schema/fields!
!

{ "fields":[{
{
{
{

"name":"_version_",
"name":"author",
"name":"cat",
"name":"id",

{ "name":"inStock",
{ "name":"name",
{ "name":"price",
!
id!
cat!
!
!
0441385532! book!
!

"type":"long",
"indexed":true, "stored":true
},!
"type":"text_general"
},!
"type":"text_general"
},!
"type":"string",
"multiValued":false, "indexed":true,!
"required":true,
"stored":true,!
"uniqueKey":true
},!
"type":"booleans"
},!
"type":"text_general"
},!
"type":"tdoubles"
}]}!

name!

price!

inStock!

author!

series_t!

sequence_i! genre_s!

Jhereg!

7.95!

false!

Steven
Brust!

Vlad
Taltos!

1!

fantasy!

!

From example/example-schemaless/solr/collection1/conf/schema.xml:
!

<fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/>!
<fieldType name="tdoubles" class="solr.TrieDoubleField" precisionStep="8" !
positionIncrementGap="0" multiValued="true"/>!

!
Managed schema
• 
• 
• 
• 
• 

The schema resource is managed by
Solr, rather than hand edited
On first startup, Solr auto-converts
schema.xml to managed-schema
Managed schema format is currently
XML, but may change in the future
XML comments don’t survive the
conversion.
mutable=true enables runtime
schema modification
–  Automatic schema field addition
–  Schema REST API

From example/example-schemaless/solr/collection1/conf/solrconfig.xml:
!

<schemaFactory class="ManagedIndexSchemaFactory">!
<bool name="mutable">true</bool>!
<str name="managedSchemaResourceName">managed-schema</str>!
</schemaFactory>!

conf/ before startup
currency.xml!
elevate.xml!
lang/!
protwords.txt!
schema.xml!
solrconfig.xml!
stopwords.txt!
synonyms.txt!

conf/ after startup
currency.xml!
elevate.xml!
lang/!
managed-schema!
protwords.txt!
schema.xml.bak!
solrconfig.xml!
stopwords.txt!
synonyms.txt!
Field value class guessing
• 

• 

Unknown fields’ String-typed values
are speculatively parsed
–  Cascading parsers attempt to
recognize field values
–  On failure, the next one is tried
–  First successful parse wins
Reconfigurable
–  Integer parser could be swapped
in for the Long parser, etc.
–  Numeric parsers can take a locale
for java.text.NumberFormat!
–  Date parser, implemented using
Joda-Time, can be configured with
other patterns, a locale, and/or a
default time zone

<updateRequestProcessorChain name="add-unknown-fields-to-the-schema">!
<processor class="solr.RemoveBlankFieldUpdateProcessorFactory"/>!
<processor class="solr.ParseBooleanFieldUpdateProcessorFactory"/>!
<processor class="solr.ParseLongFieldUpdateProcessorFactory"/>!
<processor class="solr.ParseDoubleFieldUpdateProcessorFactory"/>!
<processor class="solr.ParseDateFieldUpdateProcessorFactory">!
<arr name="format">!
<str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str>!
<str>yyyy-MM-dd'T'HH:mm:ss,SSSZ</str>!
<str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>!
<str>yyyy-MM-dd'T'HH:mm:ss,SSS</str>!
<str>yyyy-MM-dd'T'HH:mm:ssZ</str>!
<str>yyyy-MM-dd'T'HH:mm:ss</str>!
<str>yyyy-MM-dd'T'HH:mmZ</str>!
<str>yyyy-MM-dd'T'HH:mm</str>!
<str>yyyy-MM-dd HH:mm:ss.SSSZ</str>!
<str>yyyy-MM-dd HH:mm:ss,SSSZ</str>!
<str>yyyy-MM-dd HH:mm:ss.SSS</str>!
<str>yyyy-MM-dd HH:mm:ss,SSS</str>!
<str>yyyy-MM-dd HH:mm:ssZ</str>!
<str>yyyy-MM-dd HH:mm:ss</str>!
<str>yyyy-MM-dd HH:mmZ</str>!
<str>yyyy-MM-dd HH:mm</str>!
<str>yyyy-MM-dd</str>!
</arr>!
</processor>!
!
Automatic schema field addition
• 
• 
• 

• 

• 
• 

Field value classes are mapped to
field types
First match wins
If none of the typeMapping-s
match, the default field type is
assigned
If a multi-valued field contains a
mix of value classes, the first
mapping that matches all values’
classes wins
The new field is added to the
schema with the mapped field type
Reconfigurable

<processor class="solr.AddSchemaFieldsUpdateProcessorFactory">!
<str name="defaultFieldType">text_general</str>!
<lst name="typeMapping">!
<str name="valueClass">java.lang.Boolean</str>!
<str name="fieldType">booleans</str>!
</lst>!
<lst name="typeMapping">!
<str name="valueClass">java.util.Date</str>!
<str name="fieldType">tdates</str>!
</lst>!
<lst name="typeMapping">!
<str name="valueClass">java.lang.Long</str>!
<str name="valueClass">java.lang.Integer</str>!
<str name="fieldType">tlongs</str>!
</lst>!
<lst name="typeMapping">!
<str name="valueClass">java.lang.Number</str>!
<str name="fieldType">tdoubles</str>!
</lst>!
</processor>!
Schemaless mode limitations
• 
• 
• 
• 
• 
• 

Automatically adding new schema fields in production may not be a good idea
–  Unwanted fields, e.g. field name typos, won’t trigger an error
First instance wins: field type detection can’t know about the full range of a field’s
values
Wasted space: e.g. Longs are always used, when Integers might suffice
Limited gamut of detectable field types
Single analysis specification for text fields
Single processing model for all fields
Schema REST API
Schema REST API: read-only
• 
• 
• 

• 

Each element of the schema is individually readable via the Schema REST API
Output format can be JSON or XML (wt request param)
Read-only elements:
–  The entire schema
•  In addition to JSON and XML output formats, output can also be in
schema.xml format (?wt=schema.xml)
–  All fields, or a specified set of them
–  All dynamic fields, or a specified set of them
–  All field types, or a specific one
–  All copy field directives
–  The schema name, version, uniqueKey, and default query operator
–  The global similarity
Managed schema is not required to use the read-only schema REST API.
Schema REST API: read-only examples
$ SOLR=http://localhost:8983/solr/collection1!
!
$ curl $SOLR/schema/dynamicfields/*_i!

!
!
$ curl $SOLR/schema/uniquekey?wt=xml!

!

!

{!

<?xml version="1.0" encoding="UTF-8"?>!
<response>!
<lst name="responseHeader">!
<int name="status">0</int>!
<int name="QTime">1</int>!
</lst>!
<str name="uniqueKey">id</str>!
</response>!

"responseHeader":{!
"status":0,!
"QTime":1},!
"dynamicField":{!
"name":"*_i",!
"type":"int",!
"indexed":true,!
"stored":true}}!

• 

Schema REST API URLs employ the downcased form of all schema elements, but the
responses use the same casing as schema.xml.

• 

For full details on the Solr Schema REST API, see the Schema API section of the Solr
Reference Guide: https://cwiki.apache.org/confluence/display/solr/Schema+API
Schema REST API: runtime schema modification
• 
• 

• 

• 

• 

To enable schema modification via the schema REST API, the schema must be
managed, and must be configured as mutable.
Schema modifications possible as of Solr 4.4:
–  Fields may be added
•  Copy field directives may optionally be added at the same time
–  Copy field directives may be added
Works under both standalone Solr and SolrCloud
–  Under SolrCloud, conflicting simultaneous requests are detected using a form of
optimistic concurrency and automatically retried
Core/collection reload not required for schema modifications that are compatible with
previously indexed documents
–  Generally additions are not sources of schema incompatibility
Schema incompatibility-inducing operations will require core/collection reload:
–  Modifying or removing (dynamic) fields or copy field directives
–  Modifying all other schema elements
Schema REST API: add field example
$ SOLR=http://localhost:8983/solr/collection1!
!
$ curl $SOLR/schema/fields/claimid -X PUT -H 'Content-type: application/json' --data-binary '!
{ !
"type":"string",!
"stored":true,!
"copyFields": [ !
"claims", !
"all"!
]!
}’!
!

• 
• 

The copyField destinations “claims” and “all” must already exist in the schema.
For full details on the Solr Schema REST API, see the Schema API section of the Solr

Reference Guide: https://cwiki.apache.org/confluence/display/solr/Schema+API
Schema REST API TODOs
• 

https://issues.apache.org/jira/browse/SOLR-4898 is the umbrella JIRA issue
under which further schema REST API work will be done, including:
–  adding dynamic fields
–  adding field types
–  enabling wholesale replacement by PUTing a new schema.
–  modifying and removing fields, dynamic fields, field types, and copy field
directives
–  modifying all remaining aspects of the schema: Name, Version, Unique Key,
Global Similarity, and Default Query Operator
Proposal: Schema Annotations
• 
• 
• 

• 

Add arbitrary metadata at the top level of the schema and at each leaf node
Allow read/write access to that metadata via the REST API.
Uses cases:
–  Round-trippable documentation
•  Conversion to managed schema format drops all comments
–  Documentable tags
–  When modifying the schema via REST API, a "last-modified" annotation could
be automatically added.
–  User-level arbitrary key/value metadata
W3C XML Schema has a similar facility:
http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/
structures.html#element-annotation
Schema Annotation example
<schema name="example" version="1.5">!
 <annotation>!
   <description element="tag" !
content="plain-numeric-field-types">!
     Plain numeric field types store and index the!
text value verbatim.!
   </description>!
   <documentation element="copyField">!
     copyField commands copy one field to another at!
the time a document is added to the index.  It's!
used either to index the same field differently,!
     or to add multiple fields to the same field for!
easier/faster searching.!
   </documentation>!
   <last-modified>2014-03-08T12:14:02Z</last-modified>!
   …!
 </annotation>!
…!

 <fieldType name="pint" class="solr.IntField">!
   <annotation>!
     <tag>plain-numeric-field-types</tag>!
   </annotation>!
 </fieldType>!
 <fieldType name="plong" class="solr.LongField">!
   <annotation>!
     <tag>plain-numeric-field-types</tag>!
   </annotation>!
 </fieldType>!
 …!
 <copyField source="cat" dest="text">!
   <annotation>!
     <todo>Copy to the catchall field?</todo>!
   </annotation>!
 </copyField>!
 …!
 <field name="text" type="text_general">!
   <annotation>!
     <description>catchall field</description>!
     <visibility>public</visibility>!
   </annotation>!
 </field>!
Summary
• 

Schemaless Solr mode enables quick prototyping with minimal setup

• 
• 

Schema REST API provides programmatic read/write access to Solr’s schema
More elements writeable soon

• 

Schema annotations would enable round-trippable documentation, tagging, and
arbitrary user-provided metadata

Contenu connexe

Tendances

Apache Solr + ajax solr
Apache Solr + ajax solrApache Solr + ajax solr
Apache Solr + ajax solrNet7
 
Solr 6 Feature Preview
Solr 6 Feature PreviewSolr 6 Feature Preview
Solr 6 Feature PreviewYonik Seeley
 
Mastering solr
Mastering solrMastering solr
Mastering solrjurcello
 
20130310 solr tuorial
20130310 solr tuorial20130310 solr tuorial
20130310 solr tuorialChris Huang
 
Solr vs. Elasticsearch, Case by Case: Presented by Alexandre Rafalovitch, UN
Solr vs. Elasticsearch,  Case by Case: Presented by Alexandre Rafalovitch, UNSolr vs. Elasticsearch,  Case by Case: Presented by Alexandre Rafalovitch, UN
Solr vs. Elasticsearch, Case by Case: Presented by Alexandre Rafalovitch, UNLucidworks
 
Searching for AI - Leveraging Solr for classic Artificial Intelligence tasks
Searching for AI - Leveraging Solr for classic Artificial Intelligence tasksSearching for AI - Leveraging Solr for classic Artificial Intelligence tasks
Searching for AI - Leveraging Solr for classic Artificial Intelligence tasksAlexandre Rafalovitch
 
Lucene for Solr Developers
Lucene for Solr DevelopersLucene for Solr Developers
Lucene for Solr DevelopersErik Hatcher
 
Elastic search apache_solr
Elastic search apache_solrElastic search apache_solr
Elastic search apache_solrmacrochen
 
From content to search: speed-dating Apache Solr (ApacheCON 2018)
From content to search: speed-dating Apache Solr (ApacheCON 2018)From content to search: speed-dating Apache Solr (ApacheCON 2018)
From content to search: speed-dating Apache Solr (ApacheCON 2018)Alexandre Rafalovitch
 
Solr Powered Lucene
Solr Powered LuceneSolr Powered Lucene
Solr Powered LuceneErik Hatcher
 
Solr Indexing and Analysis Tricks
Solr Indexing and Analysis TricksSolr Indexing and Analysis Tricks
Solr Indexing and Analysis TricksErik Hatcher
 
Solr Recipes Workshop
Solr Recipes WorkshopSolr Recipes Workshop
Solr Recipes WorkshopErik Hatcher
 
Solr Black Belt Pre-conference
Solr Black Belt Pre-conferenceSolr Black Belt Pre-conference
Solr Black Belt Pre-conferenceErik Hatcher
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with SolrErik Hatcher
 

Tendances (20)

JSON in Solr: from top to bottom
JSON in Solr: from top to bottomJSON in Solr: from top to bottom
JSON in Solr: from top to bottom
 
Apache Solr + ajax solr
Apache Solr + ajax solrApache Solr + ajax solr
Apache Solr + ajax solr
 
Solr 6 Feature Preview
Solr 6 Feature PreviewSolr 6 Feature Preview
Solr 6 Feature Preview
 
Apache Solr Workshop
Apache Solr WorkshopApache Solr Workshop
Apache Solr Workshop
 
Solr workshop
Solr workshopSolr workshop
Solr workshop
 
Mastering solr
Mastering solrMastering solr
Mastering solr
 
20130310 solr tuorial
20130310 solr tuorial20130310 solr tuorial
20130310 solr tuorial
 
Solr vs. Elasticsearch, Case by Case: Presented by Alexandre Rafalovitch, UN
Solr vs. Elasticsearch,  Case by Case: Presented by Alexandre Rafalovitch, UNSolr vs. Elasticsearch,  Case by Case: Presented by Alexandre Rafalovitch, UN
Solr vs. Elasticsearch, Case by Case: Presented by Alexandre Rafalovitch, UN
 
Searching for AI - Leveraging Solr for classic Artificial Intelligence tasks
Searching for AI - Leveraging Solr for classic Artificial Intelligence tasksSearching for AI - Leveraging Solr for classic Artificial Intelligence tasks
Searching for AI - Leveraging Solr for classic Artificial Intelligence tasks
 
it's just search
it's just searchit's just search
it's just search
 
Solr Introduction
Solr IntroductionSolr Introduction
Solr Introduction
 
Lucene for Solr Developers
Lucene for Solr DevelopersLucene for Solr Developers
Lucene for Solr Developers
 
Apache Solr
Apache SolrApache Solr
Apache Solr
 
Elastic search apache_solr
Elastic search apache_solrElastic search apache_solr
Elastic search apache_solr
 
From content to search: speed-dating Apache Solr (ApacheCON 2018)
From content to search: speed-dating Apache Solr (ApacheCON 2018)From content to search: speed-dating Apache Solr (ApacheCON 2018)
From content to search: speed-dating Apache Solr (ApacheCON 2018)
 
Solr Powered Lucene
Solr Powered LuceneSolr Powered Lucene
Solr Powered Lucene
 
Solr Indexing and Analysis Tricks
Solr Indexing and Analysis TricksSolr Indexing and Analysis Tricks
Solr Indexing and Analysis Tricks
 
Solr Recipes Workshop
Solr Recipes WorkshopSolr Recipes Workshop
Solr Recipes Workshop
 
Solr Black Belt Pre-conference
Solr Black Belt Pre-conferenceSolr Black Belt Pre-conference
Solr Black Belt Pre-conference
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
 

En vedette

Inside Solr 5 - Bangalore Solr/Lucene Meetup
Inside Solr 5 - Bangalore Solr/Lucene MeetupInside Solr 5 - Bangalore Solr/Lucene Meetup
Inside Solr 5 - Bangalore Solr/Lucene MeetupShalin Shekhar Mangar
 
Front End Good Practices
Front End Good PracticesFront End Good Practices
Front End Good PracticesHernan Mammana
 
High Performance JSON Search and Relational Faceted Browsing with Lucene
High Performance JSON Search and Relational Faceted Browsing with LuceneHigh Performance JSON Search and Relational Faceted Browsing with Lucene
High Performance JSON Search and Relational Faceted Browsing with Lucenelucenerevolution
 
Semantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/SolrSemantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/SolrTrey Grainger
 
distributed tracing in 5 minutes
distributed tracing in 5 minutesdistributed tracing in 5 minutes
distributed tracing in 5 minutesDan Kuebrich
 
The Java Microservice Library
The Java Microservice LibraryThe Java Microservice Library
The Java Microservice LibraryRick Hightower
 
Enhance existing REST APIs (e.g. Facebook Graph API) with code completion us...
Enhance existing REST APIs  (e.g. Facebook Graph API) with code completion us...Enhance existing REST APIs  (e.g. Facebook Graph API) with code completion us...
Enhance existing REST APIs (e.g. Facebook Graph API) with code completion us...johannes_fiala
 
Cross Datacenter Replication in Apache Solr 6
Cross Datacenter Replication in Apache Solr 6Cross Datacenter Replication in Apache Solr 6
Cross Datacenter Replication in Apache Solr 6Shalin Shekhar Mangar
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudMatt Stine
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event SourcingMike Bild
 
Apache SOLR in AEM 6
Apache SOLR in AEM 6Apache SOLR in AEM 6
Apache SOLR in AEM 6Yash Mody
 
Reflected Intelligence - Lucene/Solr as a self-learning data system: Presente...
Reflected Intelligence - Lucene/Solr as a self-learning data system: Presente...Reflected Intelligence - Lucene/Solr as a self-learning data system: Presente...
Reflected Intelligence - Lucene/Solr as a self-learning data system: Presente...Lucidworks
 
Nested and Parent/Child Docs in ElasticSearch
Nested and Parent/Child Docs in ElasticSearchNested and Parent/Child Docs in ElasticSearch
Nested and Parent/Child Docs in ElasticSearchBeyondTrees
 
Rebuilding Solr 6 Examples - Layer by Layer: Presented by Alexandre Rafalovit...
Rebuilding Solr 6 Examples - Layer by Layer: Presented by Alexandre Rafalovit...Rebuilding Solr 6 Examples - Layer by Layer: Presented by Alexandre Rafalovit...
Rebuilding Solr 6 Examples - Layer by Layer: Presented by Alexandre Rafalovit...Lucidworks
 
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6DEEPAK KHETAWAT
 
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and HydraBuilding Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and HydraMarkus Lanthaler
 

En vedette (20)

Inside Solr 5 - Bangalore Solr/Lucene Meetup
Inside Solr 5 - Bangalore Solr/Lucene MeetupInside Solr 5 - Bangalore Solr/Lucene Meetup
Inside Solr 5 - Bangalore Solr/Lucene Meetup
 
Reactive Architectures
Reactive ArchitecturesReactive Architectures
Reactive Architectures
 
Front End Good Practices
Front End Good PracticesFront End Good Practices
Front End Good Practices
 
High Performance JSON Search and Relational Faceted Browsing with Lucene
High Performance JSON Search and Relational Faceted Browsing with LuceneHigh Performance JSON Search and Relational Faceted Browsing with Lucene
High Performance JSON Search and Relational Faceted Browsing with Lucene
 
Semantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/SolrSemantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/Solr
 
RPC protocols
RPC protocolsRPC protocols
RPC protocols
 
distributed tracing in 5 minutes
distributed tracing in 5 minutesdistributed tracing in 5 minutes
distributed tracing in 5 minutes
 
The Java Microservice Library
The Java Microservice LibraryThe Java Microservice Library
The Java Microservice Library
 
Enhance existing REST APIs (e.g. Facebook Graph API) with code completion us...
Enhance existing REST APIs  (e.g. Facebook Graph API) with code completion us...Enhance existing REST APIs  (e.g. Facebook Graph API) with code completion us...
Enhance existing REST APIs (e.g. Facebook Graph API) with code completion us...
 
Cross Datacenter Replication in Apache Solr 6
Cross Datacenter Replication in Apache Solr 6Cross Datacenter Replication in Apache Solr 6
Cross Datacenter Replication in Apache Solr 6
 
SolrCloud and Shard Splitting
SolrCloud and Shard SplittingSolrCloud and Shard Splitting
SolrCloud and Shard Splitting
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud
 
Something about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fastSomething about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fast
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event Sourcing
 
Apache SOLR in AEM 6
Apache SOLR in AEM 6Apache SOLR in AEM 6
Apache SOLR in AEM 6
 
Reflected Intelligence - Lucene/Solr as a self-learning data system: Presente...
Reflected Intelligence - Lucene/Solr as a self-learning data system: Presente...Reflected Intelligence - Lucene/Solr as a self-learning data system: Presente...
Reflected Intelligence - Lucene/Solr as a self-learning data system: Presente...
 
Nested and Parent/Child Docs in ElasticSearch
Nested and Parent/Child Docs in ElasticSearchNested and Parent/Child Docs in ElasticSearch
Nested and Parent/Child Docs in ElasticSearch
 
Rebuilding Solr 6 Examples - Layer by Layer: Presented by Alexandre Rafalovit...
Rebuilding Solr 6 Examples - Layer by Layer: Presented by Alexandre Rafalovit...Rebuilding Solr 6 Examples - Layer by Layer: Presented by Alexandre Rafalovit...
Rebuilding Solr 6 Examples - Layer by Layer: Presented by Alexandre Rafalovit...
 
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6
 
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and HydraBuilding Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
 

Similaire à Schemaless Solr and the Solr Schema REST API

Solr/Elasticsearch for CF Developers (and others)
Solr/Elasticsearch for CF Developers (and others)Solr/Elasticsearch for CF Developers (and others)
Solr/Elasticsearch for CF Developers (and others)Mary Jo Sminkey
 
Apache Solr - Enterprise search platform
Apache Solr - Enterprise search platformApache Solr - Enterprise search platform
Apache Solr - Enterprise search platformTommaso Teofili
 
Adobe Flash Actionscript language basics chapter-2
Adobe Flash Actionscript language basics chapter-2Adobe Flash Actionscript language basics chapter-2
Adobe Flash Actionscript language basics chapter-2Nafis Ahmed
 
Lucene for Solr Developers
Lucene for Solr DevelopersLucene for Solr Developers
Lucene for Solr DevelopersErik Hatcher
 
Apache Solr crash course
Apache Solr crash courseApache Solr crash course
Apache Solr crash courseTommaso Teofili
 
Programming in java basics
Programming in java  basicsProgramming in java  basics
Programming in java basicsLovelitJose
 
IT talk SPb "Full text search for lazy guys"
IT talk SPb "Full text search for lazy guys" IT talk SPb "Full text search for lazy guys"
IT talk SPb "Full text search for lazy guys" DataArt
 
SFDC Introduction to Apex
SFDC Introduction to ApexSFDC Introduction to Apex
SFDC Introduction to ApexSujit Kumar
 
Solr Query Parsing
Solr Query ParsingSolr Query Parsing
Solr Query ParsingErik Hatcher
 
Android webinar class_java_review
Android webinar class_java_reviewAndroid webinar class_java_review
Android webinar class_java_reviewEdureka!
 
Core java complete ppt(note)
Core java  complete  ppt(note)Core java  complete  ppt(note)
Core java complete ppt(note)arvind pandey
 
Query Parsing - Tips and Tricks
Query Parsing - Tips and TricksQuery Parsing - Tips and Tricks
Query Parsing - Tips and TricksErik Hatcher
 
Apache Solr 1.4 – Faster, Easier, and More Versatile than Ever
Apache Solr 1.4 – Faster, Easier, and More Versatile than EverApache Solr 1.4 – Faster, Easier, and More Versatile than Ever
Apache Solr 1.4 – Faster, Easier, and More Versatile than EverLucidworks (Archived)
 
Parallel SQL and Streaming Expressions in Apache Solr 6
Parallel SQL and Streaming Expressions in Apache Solr 6Parallel SQL and Streaming Expressions in Apache Solr 6
Parallel SQL and Streaming Expressions in Apache Solr 6Shalin Shekhar Mangar
 
Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)
Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)
Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)Kai Chan
 

Similaire à Schemaless Solr and the Solr Schema REST API (20)

Solr/Elasticsearch for CF Developers (and others)
Solr/Elasticsearch for CF Developers (and others)Solr/Elasticsearch for CF Developers (and others)
Solr/Elasticsearch for CF Developers (and others)
 
Apache Solr - Enterprise search platform
Apache Solr - Enterprise search platformApache Solr - Enterprise search platform
Apache Solr - Enterprise search platform
 
What's new in solr june 2014
What's new in solr june 2014What's new in solr june 2014
What's new in solr june 2014
 
Adobe Flash Actionscript language basics chapter-2
Adobe Flash Actionscript language basics chapter-2Adobe Flash Actionscript language basics chapter-2
Adobe Flash Actionscript language basics chapter-2
 
Lucene for Solr Developers
Lucene for Solr DevelopersLucene for Solr Developers
Lucene for Solr Developers
 
Apache Solr crash course
Apache Solr crash courseApache Solr crash course
Apache Solr crash course
 
Programming in java basics
Programming in java  basicsProgramming in java  basics
Programming in java basics
 
Soap2
Soap2Soap2
Soap2
 
IT talk SPb "Full text search for lazy guys"
IT talk SPb "Full text search for lazy guys" IT talk SPb "Full text search for lazy guys"
IT talk SPb "Full text search for lazy guys"
 
SFDC Introduction to Apex
SFDC Introduction to ApexSFDC Introduction to Apex
SFDC Introduction to Apex
 
OpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collectorOpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collector
 
Solr Query Parsing
Solr Query ParsingSolr Query Parsing
Solr Query Parsing
 
Android webinar class_java_review
Android webinar class_java_reviewAndroid webinar class_java_review
Android webinar class_java_review
 
Solr5
Solr5Solr5
Solr5
 
Core java complete ppt(note)
Core java  complete  ppt(note)Core java  complete  ppt(note)
Core java complete ppt(note)
 
Query Parsing - Tips and Tricks
Query Parsing - Tips and TricksQuery Parsing - Tips and Tricks
Query Parsing - Tips and Tricks
 
Apache Solr 1.4 – Faster, Easier, and More Versatile than Ever
Apache Solr 1.4 – Faster, Easier, and More Versatile than EverApache Solr 1.4 – Faster, Easier, and More Versatile than Ever
Apache Solr 1.4 – Faster, Easier, and More Versatile than Ever
 
Apache Solr for begginers
Apache Solr for begginersApache Solr for begginers
Apache Solr for begginers
 
Parallel SQL and Streaming Expressions in Apache Solr 6
Parallel SQL and Streaming Expressions in Apache Solr 6Parallel SQL and Streaming Expressions in Apache Solr 6
Parallel SQL and Streaming Expressions in Apache Solr 6
 
Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)
Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)
Search Engine Building with Lucene and Solr (So Code Camp San Diego 2014)
 

Plus de lucenerevolution

Text Classification Powered by Apache Mahout and Lucene
Text Classification Powered by Apache Mahout and LuceneText Classification Powered by Apache Mahout and Lucene
Text Classification Powered by Apache Mahout and Lucenelucenerevolution
 
State of the Art Logging. Kibana4Solr is Here!
State of the Art Logging. Kibana4Solr is Here! State of the Art Logging. Kibana4Solr is Here!
State of the Art Logging. Kibana4Solr is Here! lucenerevolution
 
Building Client-side Search Applications with Solr
Building Client-side Search Applications with SolrBuilding Client-side Search Applications with Solr
Building Client-side Search Applications with Solrlucenerevolution
 
Integrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applicationsIntegrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applicationslucenerevolution
 
Scaling Solr with SolrCloud
Scaling Solr with SolrCloudScaling Solr with SolrCloud
Scaling Solr with SolrCloudlucenerevolution
 
Administering and Monitoring SolrCloud Clusters
Administering and Monitoring SolrCloud ClustersAdministering and Monitoring SolrCloud Clusters
Administering and Monitoring SolrCloud Clusterslucenerevolution
 
Implementing a Custom Search Syntax using Solr, Lucene, and Parboiled
Implementing a Custom Search Syntax using Solr, Lucene, and ParboiledImplementing a Custom Search Syntax using Solr, Lucene, and Parboiled
Implementing a Custom Search Syntax using Solr, Lucene, and Parboiledlucenerevolution
 
Using Solr to Search and Analyze Logs
Using Solr to Search and Analyze Logs Using Solr to Search and Analyze Logs
Using Solr to Search and Analyze Logs lucenerevolution
 
Enhancing relevancy through personalization & semantic search
Enhancing relevancy through personalization & semantic searchEnhancing relevancy through personalization & semantic search
Enhancing relevancy through personalization & semantic searchlucenerevolution
 
Real-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and StormReal-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and Stormlucenerevolution
 
Solr's Admin UI - Where does the data come from?
Solr's Admin UI - Where does the data come from?Solr's Admin UI - Where does the data come from?
Solr's Admin UI - Where does the data come from?lucenerevolution
 
Text Classification with Lucene/Solr, Apache Hadoop and LibSVM
Text Classification with Lucene/Solr, Apache Hadoop and LibSVMText Classification with Lucene/Solr, Apache Hadoop and LibSVM
Text Classification with Lucene/Solr, Apache Hadoop and LibSVMlucenerevolution
 
Faceted Search with Lucene
Faceted Search with LuceneFaceted Search with Lucene
Faceted Search with Lucenelucenerevolution
 
Recent Additions to Lucene Arsenal
Recent Additions to Lucene ArsenalRecent Additions to Lucene Arsenal
Recent Additions to Lucene Arsenallucenerevolution
 
Turning search upside down
Turning search upside downTurning search upside down
Turning search upside downlucenerevolution
 
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...lucenerevolution
 
Shrinking the haystack wes caldwell - final
Shrinking the haystack   wes caldwell - finalShrinking the haystack   wes caldwell - final
Shrinking the haystack wes caldwell - finallucenerevolution
 
The First Class Integration of Solr with Hadoop
The First Class Integration of Solr with HadoopThe First Class Integration of Solr with Hadoop
The First Class Integration of Solr with Hadooplucenerevolution
 
A Novel methodology for handling Document Level Security in Search Based Appl...
A Novel methodology for handling Document Level Security in Search Based Appl...A Novel methodology for handling Document Level Security in Search Based Appl...
A Novel methodology for handling Document Level Security in Search Based Appl...lucenerevolution
 

Plus de lucenerevolution (20)

Text Classification Powered by Apache Mahout and Lucene
Text Classification Powered by Apache Mahout and LuceneText Classification Powered by Apache Mahout and Lucene
Text Classification Powered by Apache Mahout and Lucene
 
State of the Art Logging. Kibana4Solr is Here!
State of the Art Logging. Kibana4Solr is Here! State of the Art Logging. Kibana4Solr is Here!
State of the Art Logging. Kibana4Solr is Here!
 
Search at Twitter
Search at TwitterSearch at Twitter
Search at Twitter
 
Building Client-side Search Applications with Solr
Building Client-side Search Applications with SolrBuilding Client-side Search Applications with Solr
Building Client-side Search Applications with Solr
 
Integrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applicationsIntegrate Solr with real-time stream processing applications
Integrate Solr with real-time stream processing applications
 
Scaling Solr with SolrCloud
Scaling Solr with SolrCloudScaling Solr with SolrCloud
Scaling Solr with SolrCloud
 
Administering and Monitoring SolrCloud Clusters
Administering and Monitoring SolrCloud ClustersAdministering and Monitoring SolrCloud Clusters
Administering and Monitoring SolrCloud Clusters
 
Implementing a Custom Search Syntax using Solr, Lucene, and Parboiled
Implementing a Custom Search Syntax using Solr, Lucene, and ParboiledImplementing a Custom Search Syntax using Solr, Lucene, and Parboiled
Implementing a Custom Search Syntax using Solr, Lucene, and Parboiled
 
Using Solr to Search and Analyze Logs
Using Solr to Search and Analyze Logs Using Solr to Search and Analyze Logs
Using Solr to Search and Analyze Logs
 
Enhancing relevancy through personalization & semantic search
Enhancing relevancy through personalization & semantic searchEnhancing relevancy through personalization & semantic search
Enhancing relevancy through personalization & semantic search
 
Real-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and StormReal-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and Storm
 
Solr's Admin UI - Where does the data come from?
Solr's Admin UI - Where does the data come from?Solr's Admin UI - Where does the data come from?
Solr's Admin UI - Where does the data come from?
 
Text Classification with Lucene/Solr, Apache Hadoop and LibSVM
Text Classification with Lucene/Solr, Apache Hadoop and LibSVMText Classification with Lucene/Solr, Apache Hadoop and LibSVM
Text Classification with Lucene/Solr, Apache Hadoop and LibSVM
 
Faceted Search with Lucene
Faceted Search with LuceneFaceted Search with Lucene
Faceted Search with Lucene
 
Recent Additions to Lucene Arsenal
Recent Additions to Lucene ArsenalRecent Additions to Lucene Arsenal
Recent Additions to Lucene Arsenal
 
Turning search upside down
Turning search upside downTurning search upside down
Turning search upside down
 
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
Spellchecking in Trovit: Implementing a Contextual Multi-language Spellchecke...
 
Shrinking the haystack wes caldwell - final
Shrinking the haystack   wes caldwell - finalShrinking the haystack   wes caldwell - final
Shrinking the haystack wes caldwell - final
 
The First Class Integration of Solr with Hadoop
The First Class Integration of Solr with HadoopThe First Class Integration of Solr with Hadoop
The First Class Integration of Solr with Hadoop
 
A Novel methodology for handling Document Level Security in Search Based Appl...
A Novel methodology for handling Document Level Security in Search Based Appl...A Novel methodology for handling Document Level Security in Search Based Appl...
A Novel methodology for handling Document Level Security in Search Based Appl...
 

Dernier

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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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
 
[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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 

Dernier (20)

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...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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?
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
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...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
[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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Schemaless Solr and the Solr Schema REST API

  • 1.
  • 2. SCHEMALESS SOLR AND THE SOLR SCHEMA REST API Steve Rowe Twitter: @steven_a_rowe Senior Software Engineer, LucidWorks
  • 3. Who am I? •  •  •  •  LucidWorks employee Lucene/Solr committer since 2010 JFlex committer since 2008 Previously at the Center for Natural Language Processing at Syracuse University’s iSchool (School of Information) •  Twitter: @steven_a_rowe
  • 4. Schemaless Solr •  As of version 4.4, Solr can operate in schemaless mode: –  No need to pre-configure fields in the schema –  As documents are indexed, previously unknown fields are automatically added to the schema –  Field types are auto-detected from a limited set of basic types: •  Long, Double, Boolean, Date, Text (default) •  All are multi-valued –  Works in standalone Solr and SolrCloud •  Solr features used to implement schemaless mode: –  Managed schema •  Required for runtime schema modification –  Field value class guessing •  Parsers attempt to detect the Java class of Stringvalued field content –  Automatic schema field addition •  Java class(es) mapped to schema field type
  • 5. The slide about the nature and utility of schemalessness •  •  •  “Schemaless” does not mean that there is no schema Search applications need schemas to support non-trivial document models –  No schema needed when there is only one field, or only one field type, i.e. all fields share: •  Document & query processing, including analysis •  Index features & format •  Similarity implementation •  (etc.) –  Otherwise, search apps need to manage per-field processing configuration (i.e. a schema) to consistently index documents and effectively serve queries So what does “schemaless” mean for Solr? –  No up-front schema configuration required –  Schema discovery: document structure is either not fixed or not fully known
  • 6. Dynamic fields •  •  Convention over configuration Glob-like patterns match field names with field types ! <dynamicField name="*_i" type="int" indexed="true” stored="true"/>! <fieldType name="int" class="solr.TrieIntField"! precisionStep="0" positionIncrementGap="0"/>! ! •  •  •  •  Dynamic fields solve the problem of assigning field types to unknown fields by inferring a field’s type from its name By contrast, Solr’s schemaless mode infers an unknown field’s type from its value or values These two approaches are complementary The Solr schemaless example defines a number of dynamic fields, including the *_i ! int mapping above
  • 7. Schemaless mode example From example/example-schemaless/solr/collection1/conf/schema.xml: ! <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />! <field name="_version_" type="long" indexed="true" stored="true"/>! From example/exampledocs/books.csv: id,cat,name,price,inStock,author,series_t,sequence_i,genre_s! 0441385532,book,Jhereg,7.95,false,Steven Brust,Vlad Taltos,1,fantasy! ...! ! $ cd example && java -Dsolr.solr.home=example-schemaless/solr -jar start.jar! ! $ cd exampledocs && java -Dtype=text/csv -jar post.jar books.csv! ! SimplePostTool version 1.5! Posting files to base url http://localhost:8983/solr/update using content-type text/csv..! POSTing file books.csv! 1 files indexed.! COMMITting Solr index changes to http://localhost:8983/solr/update..! Time spent: 0:00:00.147!
  • 8. Schemaless mode example $ curl http://localhost:8983/solr/schema/fields! ! { "fields":[{ { { { "name":"_version_", "name":"author", "name":"cat", "name":"id", { "name":"inStock", { "name":"name", { "name":"price", ! id! cat! ! ! 0441385532! book! ! "type":"long", "indexed":true, "stored":true },! "type":"text_general" },! "type":"text_general" },! "type":"string", "multiValued":false, "indexed":true,! "required":true, "stored":true,! "uniqueKey":true },! "type":"booleans" },! "type":"text_general" },! "type":"tdoubles" }]}! name! price! inStock! author! series_t! sequence_i! genre_s! Jhereg! 7.95! false! Steven Brust! Vlad Taltos! 1! fantasy! ! From example/example-schemaless/solr/collection1/conf/schema.xml: ! <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/>! <fieldType name="tdoubles" class="solr.TrieDoubleField" precisionStep="8" ! positionIncrementGap="0" multiValued="true"/>! !
  • 9. Managed schema •  •  •  •  •  The schema resource is managed by Solr, rather than hand edited On first startup, Solr auto-converts schema.xml to managed-schema Managed schema format is currently XML, but may change in the future XML comments don’t survive the conversion. mutable=true enables runtime schema modification –  Automatic schema field addition –  Schema REST API From example/example-schemaless/solr/collection1/conf/solrconfig.xml: ! <schemaFactory class="ManagedIndexSchemaFactory">! <bool name="mutable">true</bool>! <str name="managedSchemaResourceName">managed-schema</str>! </schemaFactory>! conf/ before startup currency.xml! elevate.xml! lang/! protwords.txt! schema.xml! solrconfig.xml! stopwords.txt! synonyms.txt! conf/ after startup currency.xml! elevate.xml! lang/! managed-schema! protwords.txt! schema.xml.bak! solrconfig.xml! stopwords.txt! synonyms.txt!
  • 10. Field value class guessing •  •  Unknown fields’ String-typed values are speculatively parsed –  Cascading parsers attempt to recognize field values –  On failure, the next one is tried –  First successful parse wins Reconfigurable –  Integer parser could be swapped in for the Long parser, etc. –  Numeric parsers can take a locale for java.text.NumberFormat! –  Date parser, implemented using Joda-Time, can be configured with other patterns, a locale, and/or a default time zone <updateRequestProcessorChain name="add-unknown-fields-to-the-schema">! <processor class="solr.RemoveBlankFieldUpdateProcessorFactory"/>! <processor class="solr.ParseBooleanFieldUpdateProcessorFactory"/>! <processor class="solr.ParseLongFieldUpdateProcessorFactory"/>! <processor class="solr.ParseDoubleFieldUpdateProcessorFactory"/>! <processor class="solr.ParseDateFieldUpdateProcessorFactory">! <arr name="format">! <str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str>! <str>yyyy-MM-dd'T'HH:mm:ss,SSSZ</str>! <str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>! <str>yyyy-MM-dd'T'HH:mm:ss,SSS</str>! <str>yyyy-MM-dd'T'HH:mm:ssZ</str>! <str>yyyy-MM-dd'T'HH:mm:ss</str>! <str>yyyy-MM-dd'T'HH:mmZ</str>! <str>yyyy-MM-dd'T'HH:mm</str>! <str>yyyy-MM-dd HH:mm:ss.SSSZ</str>! <str>yyyy-MM-dd HH:mm:ss,SSSZ</str>! <str>yyyy-MM-dd HH:mm:ss.SSS</str>! <str>yyyy-MM-dd HH:mm:ss,SSS</str>! <str>yyyy-MM-dd HH:mm:ssZ</str>! <str>yyyy-MM-dd HH:mm:ss</str>! <str>yyyy-MM-dd HH:mmZ</str>! <str>yyyy-MM-dd HH:mm</str>! <str>yyyy-MM-dd</str>! </arr>! </processor>! !
  • 11. Automatic schema field addition •  •  •  •  •  •  Field value classes are mapped to field types First match wins If none of the typeMapping-s match, the default field type is assigned If a multi-valued field contains a mix of value classes, the first mapping that matches all values’ classes wins The new field is added to the schema with the mapped field type Reconfigurable <processor class="solr.AddSchemaFieldsUpdateProcessorFactory">! <str name="defaultFieldType">text_general</str>! <lst name="typeMapping">! <str name="valueClass">java.lang.Boolean</str>! <str name="fieldType">booleans</str>! </lst>! <lst name="typeMapping">! <str name="valueClass">java.util.Date</str>! <str name="fieldType">tdates</str>! </lst>! <lst name="typeMapping">! <str name="valueClass">java.lang.Long</str>! <str name="valueClass">java.lang.Integer</str>! <str name="fieldType">tlongs</str>! </lst>! <lst name="typeMapping">! <str name="valueClass">java.lang.Number</str>! <str name="fieldType">tdoubles</str>! </lst>! </processor>!
  • 12. Schemaless mode limitations •  •  •  •  •  •  Automatically adding new schema fields in production may not be a good idea –  Unwanted fields, e.g. field name typos, won’t trigger an error First instance wins: field type detection can’t know about the full range of a field’s values Wasted space: e.g. Longs are always used, when Integers might suffice Limited gamut of detectable field types Single analysis specification for text fields Single processing model for all fields
  • 14. Schema REST API: read-only •  •  •  •  Each element of the schema is individually readable via the Schema REST API Output format can be JSON or XML (wt request param) Read-only elements: –  The entire schema •  In addition to JSON and XML output formats, output can also be in schema.xml format (?wt=schema.xml) –  All fields, or a specified set of them –  All dynamic fields, or a specified set of them –  All field types, or a specific one –  All copy field directives –  The schema name, version, uniqueKey, and default query operator –  The global similarity Managed schema is not required to use the read-only schema REST API.
  • 15. Schema REST API: read-only examples $ SOLR=http://localhost:8983/solr/collection1! ! $ curl $SOLR/schema/dynamicfields/*_i! ! ! $ curl $SOLR/schema/uniquekey?wt=xml! ! ! {! <?xml version="1.0" encoding="UTF-8"?>! <response>! <lst name="responseHeader">! <int name="status">0</int>! <int name="QTime">1</int>! </lst>! <str name="uniqueKey">id</str>! </response>! "responseHeader":{! "status":0,! "QTime":1},! "dynamicField":{! "name":"*_i",! "type":"int",! "indexed":true,! "stored":true}}! •  Schema REST API URLs employ the downcased form of all schema elements, but the responses use the same casing as schema.xml. •  For full details on the Solr Schema REST API, see the Schema API section of the Solr Reference Guide: https://cwiki.apache.org/confluence/display/solr/Schema+API
  • 16. Schema REST API: runtime schema modification •  •  •  •  •  To enable schema modification via the schema REST API, the schema must be managed, and must be configured as mutable. Schema modifications possible as of Solr 4.4: –  Fields may be added •  Copy field directives may optionally be added at the same time –  Copy field directives may be added Works under both standalone Solr and SolrCloud –  Under SolrCloud, conflicting simultaneous requests are detected using a form of optimistic concurrency and automatically retried Core/collection reload not required for schema modifications that are compatible with previously indexed documents –  Generally additions are not sources of schema incompatibility Schema incompatibility-inducing operations will require core/collection reload: –  Modifying or removing (dynamic) fields or copy field directives –  Modifying all other schema elements
  • 17. Schema REST API: add field example $ SOLR=http://localhost:8983/solr/collection1! ! $ curl $SOLR/schema/fields/claimid -X PUT -H 'Content-type: application/json' --data-binary '! { ! "type":"string",! "stored":true,! "copyFields": [ ! "claims", ! "all"! ]! }’! ! •  •  The copyField destinations “claims” and “all” must already exist in the schema. For full details on the Solr Schema REST API, see the Schema API section of the Solr Reference Guide: https://cwiki.apache.org/confluence/display/solr/Schema+API
  • 18. Schema REST API TODOs •  https://issues.apache.org/jira/browse/SOLR-4898 is the umbrella JIRA issue under which further schema REST API work will be done, including: –  adding dynamic fields –  adding field types –  enabling wholesale replacement by PUTing a new schema. –  modifying and removing fields, dynamic fields, field types, and copy field directives –  modifying all remaining aspects of the schema: Name, Version, Unique Key, Global Similarity, and Default Query Operator
  • 19. Proposal: Schema Annotations •  •  •  •  Add arbitrary metadata at the top level of the schema and at each leaf node Allow read/write access to that metadata via the REST API. Uses cases: –  Round-trippable documentation •  Conversion to managed schema format drops all comments –  Documentable tags –  When modifying the schema via REST API, a "last-modified" annotation could be automatically added. –  User-level arbitrary key/value metadata W3C XML Schema has a similar facility: http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/ structures.html#element-annotation
  • 20. Schema Annotation example <schema name="example" version="1.5">!  <annotation>!    <description element="tag" ! content="plain-numeric-field-types">!      Plain numeric field types store and index the! text value verbatim.!    </description>!    <documentation element="copyField">!      copyField commands copy one field to another at! the time a document is added to the index.  It's! used either to index the same field differently,!      or to add multiple fields to the same field for! easier/faster searching.!    </documentation>!    <last-modified>2014-03-08T12:14:02Z</last-modified>!    …!  </annotation>! …!  <fieldType name="pint" class="solr.IntField">!    <annotation>!      <tag>plain-numeric-field-types</tag>!    </annotation>!  </fieldType>!  <fieldType name="plong" class="solr.LongField">!    <annotation>!      <tag>plain-numeric-field-types</tag>!    </annotation>!  </fieldType>!  …!  <copyField source="cat" dest="text">!    <annotation>!      <todo>Copy to the catchall field?</todo>!    </annotation>!  </copyField>!  …!  <field name="text" type="text_general">!    <annotation>!      <description>catchall field</description>!      <visibility>public</visibility>!    </annotation>!  </field>!
  • 21. Summary •  Schemaless Solr mode enables quick prototyping with minimal setup •  •  Schema REST API provides programmatic read/write access to Solr’s schema More elements writeable soon •  Schema annotations would enable round-trippable documentation, tagging, and arbitrary user-provided metadata