SlideShare a Scribd company logo
Payloads in Solr
Erik Hatcher
Senior Solutions Architect / co-founder, Lucidworks
Solr now smoothly integrates with Lucene-level payloads.
Payloads provide optional per-term metadata, numeric or
otherwise. Payloads help solve challenging use cases such as
per-store product pricing and per-term confidence/weighting.
This session will present the payload feature from the Lucene
layer up to the Solr integration, including per-store pricing,
per-term weighting, and more.
Payloads in Solr
Payloads in Solr
01
tl;dr
• Solr 6.6+ via SOLR-1485
• per-term position metadata
• Use cases:
• per-store pricing
• weighting terms: e.g. confidence of
term, or importance/relevance of term
• weighting term types (synonyms
factor lower, verbs factor higher)
Payloads in Solr
01
Lucene’s Payloads
• Token: PayloadAttribute
• byte[] per term position, optional
• Several components set payloads
• Similarity.SimScorer

#computePayloadFactor
• No built-in components (outside
Lucene’s test cases), before
SOLR-1485, implemented this
• PostingsEnum#getPayload
Payloads in Solr
http://lucene.apache.org/core/6_6_0/core/
org/apache/lucene/codecs/lucene50/
Lucene50PostingsFormat.html
Postings Format
Payloads in Solr
01
Lucene’s Token
• Field
• Attributes:
• CharTerm: term text
• … Keyword, Type, Offset,…
• and Payload!
Payloads in Solr
01
setPayload(bytes)
• DelimitedPayloadTokenFilter
• NumericPayloadTokenFilter
• TokenOffsetPayloadTokenFilter
• TypeAsPayloadTokenFilter
• pre-analyzed field (Solr)
Payloads in Solr
01
DelimitedPayloadTokenFilter
Payloads in Solr
01
DelimitedPayloadTokenFilter
• term1|payload1 term2|payload2
• encodes payloads as:
• float,
• int,
• or string / raw bytes
field weighted_terms_dps
term one
doc 0
freq 1
pos 0
payload 1.0
term three
doc 0
freq 1
pos 2
payload 3.0
term two
doc 0
freq 1
pos 1
payload 2.0
term weighted
doc 1
freq 2
pos 0
payload 50.0
pos 1
payload 100.0
Payloads in Solr
01
Use Cases
• products with per-store pricing
• boosting by weighted terms
• down-boosting synonyms
Payloads in Solr
01Traditional per-store pricing
strategies
• Explode docs:
• num_docs=products
* stores (1M products
* 5000 stores could
be up to 5B docs!)
• query-time
collapsing (by
product id)
• Explode fields:
• default_price
• store_price_0001
• store_price_0002
• …
store_price_NNNN
• query-time field
choice
• eg. up to 5000 fields
per document
Payloads in Solr
01
Payload-based per-store pricing
• default_price
• store_prices:
• terms: STORE_0001… STORE_NNNN
• per-term payload of price
• One additional field
• with up to num_stores terms/payloads
Solr Payloads
Payloads in Solr
01
Down-boosting synonyms
id,synonyms_with_payloads
99,tv
synonyms.txt
Television, Televisions, TV, TVs
/select?wt=csv&fl=id,score&

q={!payload_score 

f=synonyms_with_payloads

v=$payload_term

func=max}

&payload_term=television


id,score
99,0.1
&payload_term=tv
id,score
99,1.0
{
"add-field-type": {
"name": "synonyms_with_payloads",
"stored": "true",
"class": "solr.TextField",
"positionIncrementGap": “100",
"indexAnalyzer": {
"tokenizer": {
"class": "solr.StandardTokenizerFactory"
},
"filters": [
{
"class": "solr.SynonymGraphFilterFactory",
"expand": "true",
"ignoreCase": "true",
"synonyms": "synonyms.txt"
},
{
"class": "solr.LowerCaseFilterFactory"
},
{
"class": "solr.NumericPayloadTokenFilterFactory",
"payload": "0.1",
"typeMatch": "SYNONYM"
}
]
},
,"queryAnalyzer": {
"tokenizer": {
"class": "solr.StandardTokenizerFactory"
},
"filters": [
{
"class": "solr.LowerCaseFilterFactory"
}
]
}
}}
Payloads in Solr
01
Solr Integration
• Schema-aware
• DelimitedPayloadTokenFilter:
• float, integer, identity
• NumericPayloadTokenFilter: float
• Function / Value Source
• payload()
• Query parsers
• {!payload_score}
• {!payload_check}
• Default (data_driven) schema has built-in payload-enabled
dynamic field mappings:
• *_dpf, *_dpi, and *_dps
Payloads in Solr
01
Solr features with payloads
• searching (scoring by payload):

q={!payload_score…}
• searching (filtering by payload):

fq={!frange cost=999 l=0 u=100}payload(…)
• sorting:

sort=payload(…) desc
• faceting:

facet.query={!frange 

l=0 u=100 

v=$payload_func}
&payload_func=payload(…)
Payloads in Solr
01
payload()
• payload(field,

term

[,default_value

[,min|max|average|first]])
• Operates on float or integer encoded payloads
• Value source, returning a single float per-document
• Multiple term matches are possible, returning the min,
max, or average. first is a special short-circuit
• If no term match for document, returns default value,
or zero
Payloads in Solr
01
payload() uses
• &payload_function=payload(….)
• Returning: 

fl=payload_result:${payload_function}
• Sorting:

sort=${payload function} desc
• Range faceting:

facet.query={!frange 

key=up_to_one_hundred

l=0 u=100 v=$payload_function}
• Matching:
• without payload considered: term query, eg {!term}
• with payloads factored: {!payload_check}
Payloads in Solr
01
{!payload_score}
• SpanQuery wrapping, payload-based scoring
• SpanQuery support: currently SpanNearQuery of
SpanTermQuery’s
• scoring:
• payload function: min, max, or average
• includeSpanScore=true: multiples payload
function result by base query scoring
• with a simple term query, payload() function is
equivalent (with includeSpanScore=false)
Payloads in Solr
01
{!payload_score} examples
{!payload_score 

f=payloaded_field_name 

v=term_value

func=min|max|average
[includeSpanScore=false]
}
{!payload_score

f=vals_dpf 

func=average

v=weighted

includeSpanScore=true}
Payloads in Solr
01
{!xmlparser}
• {!xmlparser}

<BoostingTermQuery 

fieldName="weighted_terms_dpf">

weighted

</BoostingTermQuery>
• == {!payload_score f=weighted_terms_dpf
func=average includeSpanScore=true}
Payloads in Solr
01
{!payload_check}
• SpanQuery wrapping, phrase relevancy scoring
• SpanQuery support: currently SpanNearQuery of
SpanTermQuery’s
• matching:
• matches when all terms match all corresponding
payloads, in order
• scoring:
• uses SpanNearQuery’s score
Payloads in Solr
01
{!payload_check}
id,words_dps
99,taking|VERB the|ARTICLE train|NOUN
q={!payload_check 

f=words_dps 

v=train

payloads=NOUN}
q={!payload_check 

f=words_dps

v='the train'

payloads='ARTICLE NOUN'}
Payloads in Solr
01
Payload Cons
• payload(): if used as a {!func} q or facet.query it will
compute value for ALL documents in index. To PostFilter fq
payload function computation of just matching documents use
{!frange} with payload()
• Updating values
• Atomic field update
• (could multivalue and delete/add a single term|value)?
• could mean updating all inventory for all stores for a single
change
• no current range faceting support (of functions in general)
Payloads in Solr
01
What’s next
• SOLR-10541 - “Range facet by function”
• solves range faceting by payload
• LUCENE-7854: term frequency “payload”
• coming soon, see SOLR-11358
• OpenNLP types => payloads
• Pluggable encoders/decoders?
Payloads in Solr
https://lucidworks.com/2017/09/14/solr-payloads/
Further reading
Payloads in Solr

More Related Content

What's hot (20)

PPT
Boosting Documents in Solr by Recency, Popularity and Personal Preferences - ...
lucenerevolution
 
PPT
Customizing Oracle EBS OA Framework
iWare Logic Technologies Pvt. Ltd.
 
PPTX
Sling Models Overview
Justin Edelson
 
PPTX
Intercompany transaction flows – inventory(EBS R12)
SHAHZAD M. SALEEM
 
PDF
MongoDB and Schema Design
Matias Cascallares
 
DOCX
Diagrama entidad relacion_carta_estructurada
Wallyz Daniel
 
PPT
Standard Cost Accounting in Oracle ERP
Larry Sherrod
 
DOCX
Oracle Fusion Payroll tracing for debugging
Feras Ahmad
 
PDF
Spring Boot
koppenolski
 
PDF
Oracle Inventory – Types of Move Orders
Boopathy CS
 
PDF
Java 8 Lambda Expressions & Streams
NewCircle Training
 
DOCX
How to remove disable and cancel shipment functionality in enter purchase or...
Ahmed Elshayeb
 
DOCX
Oracle Advanced Pricing (Creating a discount modifier using qualifiers)
Ahmed Elshayeb
 
PPTX
HOW TO CREATE A MODULE IN ODOO
Celine George
 
PPSX
JSON in Oracle 18c and 19c
stewashton
 
DOCX
Validate maximum expiration date for items lots
Ahmed Elshayeb
 
PDF
Introduction to Impala
markgrover
 
PPTX
Java 11 to 17 : What's new !?
Jérôme Tamborini
 
PDF
20150202.pdf
Narendra Reddy
 
DOCX
EAM Overview
Baker Khader Abdallah, PMP
 
Boosting Documents in Solr by Recency, Popularity and Personal Preferences - ...
lucenerevolution
 
Customizing Oracle EBS OA Framework
iWare Logic Technologies Pvt. Ltd.
 
Sling Models Overview
Justin Edelson
 
Intercompany transaction flows – inventory(EBS R12)
SHAHZAD M. SALEEM
 
MongoDB and Schema Design
Matias Cascallares
 
Diagrama entidad relacion_carta_estructurada
Wallyz Daniel
 
Standard Cost Accounting in Oracle ERP
Larry Sherrod
 
Oracle Fusion Payroll tracing for debugging
Feras Ahmad
 
Spring Boot
koppenolski
 
Oracle Inventory – Types of Move Orders
Boopathy CS
 
Java 8 Lambda Expressions & Streams
NewCircle Training
 
How to remove disable and cancel shipment functionality in enter purchase or...
Ahmed Elshayeb
 
Oracle Advanced Pricing (Creating a discount modifier using qualifiers)
Ahmed Elshayeb
 
HOW TO CREATE A MODULE IN ODOO
Celine George
 
JSON in Oracle 18c and 19c
stewashton
 
Validate maximum expiration date for items lots
Ahmed Elshayeb
 
Introduction to Impala
markgrover
 
Java 11 to 17 : What's new !?
Jérôme Tamborini
 
20150202.pdf
Narendra Reddy
 

Similar to Solr Payloads (20)

PDF
Payloads and OCR with Solr
OpenSource Connections
 
PPTX
The Intent Algorithms of Search & Recommendation Engines
Trey Grainger
 
PPTX
Building Search & Recommendation Engines
Trey Grainger
 
PDF
Search Engine-Building with Lucene and Solr, Part 2 (SoCal Code Camp LA 2013)
Kai Chan
 
PDF
Search Engine-Building with Lucene and Solr
Kai Chan
 
PDF
Lucene for Solr Developers
Erik Hatcher
 
PDF
Beyond full-text searches with Lucene and Solr
Bertrand Delacretaz
 
PDF
Lucene for Solr Developers
Erik Hatcher
 
PDF
Search Engine-Building with Lucene and Solr, Part 1 (SoCal Code Camp LA 2013)
Kai Chan
 
PPTX
Introduction to Lucene & Solr and Usecases
Rahul Jain
 
PPTX
Apache solr
Péter Király
 
PDF
A Practical Introduction to Apache Solr
Angel Borroy López
 
PPTX
20130310 solr tuorial
Chris Huang
 
PDF
Get the most out of Solr search with PHP
Paul Borgermans
 
PDF
Lucene And Solr Document Classification
Alessandro Benedetti
 
PDF
Apache Lucene/Solr Document Classification
Sease
 
PDF
Apache Solr crash course
Tommaso Teofili
 
ODP
Mastering solr
jurcello
 
PDF
Solr Masterclass Bangkok, June 2014
Alexandre Rafalovitch
 
PDF
"Solr Update" at code4lib '13 - Chicago
Erik Hatcher
 
Payloads and OCR with Solr
OpenSource Connections
 
The Intent Algorithms of Search & Recommendation Engines
Trey Grainger
 
Building Search & Recommendation Engines
Trey Grainger
 
Search Engine-Building with Lucene and Solr, Part 2 (SoCal Code Camp LA 2013)
Kai Chan
 
Search Engine-Building with Lucene and Solr
Kai Chan
 
Lucene for Solr Developers
Erik Hatcher
 
Beyond full-text searches with Lucene and Solr
Bertrand Delacretaz
 
Lucene for Solr Developers
Erik Hatcher
 
Search Engine-Building with Lucene and Solr, Part 1 (SoCal Code Camp LA 2013)
Kai Chan
 
Introduction to Lucene & Solr and Usecases
Rahul Jain
 
Apache solr
Péter Király
 
A Practical Introduction to Apache Solr
Angel Borroy López
 
20130310 solr tuorial
Chris Huang
 
Get the most out of Solr search with PHP
Paul Borgermans
 
Lucene And Solr Document Classification
Alessandro Benedetti
 
Apache Lucene/Solr Document Classification
Sease
 
Apache Solr crash course
Tommaso Teofili
 
Mastering solr
jurcello
 
Solr Masterclass Bangkok, June 2014
Alexandre Rafalovitch
 
"Solr Update" at code4lib '13 - Chicago
Erik Hatcher
 
Ad

More from Erik Hatcher (20)

PDF
Ted Talk
Erik Hatcher
 
PDF
it's just search
Erik Hatcher
 
PDF
Lucene's Latest (for Libraries)
Erik Hatcher
 
PDF
Solr Indexing and Analysis Tricks
Erik Hatcher
 
PDF
Solr Powered Libraries
Erik Hatcher
 
PDF
Solr Query Parsing
Erik Hatcher
 
PDF
Query Parsing - Tips and Tricks
Erik Hatcher
 
PDF
Solr 4
Erik Hatcher
 
PDF
Solr Recipes
Erik Hatcher
 
PDF
Lucene for Solr Developers
Erik Hatcher
 
PDF
Introduction to Solr
Erik Hatcher
 
PDF
Solr Flair
Erik Hatcher
 
PDF
Introduction to Solr
Erik Hatcher
 
PDF
Introduction to Solr
Erik Hatcher
 
PDF
Rapid Prototyping with Solr
Erik Hatcher
 
PDF
What's New in Solr 3.x / 4.0
Erik Hatcher
 
PDF
Solr Application Development Tutorial
Erik Hatcher
 
PDF
Solr Recipes Workshop
Erik Hatcher
 
PDF
Rapid Prototyping with Solr
Erik Hatcher
 
PDF
Lucene for Solr Developers
Erik Hatcher
 
Ted Talk
Erik Hatcher
 
it's just search
Erik Hatcher
 
Lucene's Latest (for Libraries)
Erik Hatcher
 
Solr Indexing and Analysis Tricks
Erik Hatcher
 
Solr Powered Libraries
Erik Hatcher
 
Solr Query Parsing
Erik Hatcher
 
Query Parsing - Tips and Tricks
Erik Hatcher
 
Solr 4
Erik Hatcher
 
Solr Recipes
Erik Hatcher
 
Lucene for Solr Developers
Erik Hatcher
 
Introduction to Solr
Erik Hatcher
 
Solr Flair
Erik Hatcher
 
Introduction to Solr
Erik Hatcher
 
Introduction to Solr
Erik Hatcher
 
Rapid Prototyping with Solr
Erik Hatcher
 
What's New in Solr 3.x / 4.0
Erik Hatcher
 
Solr Application Development Tutorial
Erik Hatcher
 
Solr Recipes Workshop
Erik Hatcher
 
Rapid Prototyping with Solr
Erik Hatcher
 
Lucene for Solr Developers
Erik Hatcher
 
Ad

Recently uploaded (20)

PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 

Solr Payloads

  • 1. Payloads in Solr Erik Hatcher Senior Solutions Architect / co-founder, Lucidworks
  • 2. Solr now smoothly integrates with Lucene-level payloads. Payloads provide optional per-term metadata, numeric or otherwise. Payloads help solve challenging use cases such as per-store product pricing and per-term confidence/weighting. This session will present the payload feature from the Lucene layer up to the Solr integration, including per-store pricing, per-term weighting, and more. Payloads in Solr
  • 3. Payloads in Solr 01 tl;dr • Solr 6.6+ via SOLR-1485 • per-term position metadata • Use cases: • per-store pricing • weighting terms: e.g. confidence of term, or importance/relevance of term • weighting term types (synonyms factor lower, verbs factor higher)
  • 4. Payloads in Solr 01 Lucene’s Payloads • Token: PayloadAttribute • byte[] per term position, optional • Several components set payloads • Similarity.SimScorer
 #computePayloadFactor • No built-in components (outside Lucene’s test cases), before SOLR-1485, implemented this • PostingsEnum#getPayload
  • 6. Payloads in Solr 01 Lucene’s Token • Field • Attributes: • CharTerm: term text • … Keyword, Type, Offset,… • and Payload!
  • 7. Payloads in Solr 01 setPayload(bytes) • DelimitedPayloadTokenFilter • NumericPayloadTokenFilter • TokenOffsetPayloadTokenFilter • TypeAsPayloadTokenFilter • pre-analyzed field (Solr)
  • 9. Payloads in Solr 01 DelimitedPayloadTokenFilter • term1|payload1 term2|payload2 • encodes payloads as: • float, • int, • or string / raw bytes
  • 10. field weighted_terms_dps term one doc 0 freq 1 pos 0 payload 1.0 term three doc 0 freq 1 pos 2 payload 3.0 term two doc 0 freq 1 pos 1 payload 2.0 term weighted doc 1 freq 2 pos 0 payload 50.0 pos 1 payload 100.0
  • 11. Payloads in Solr 01 Use Cases • products with per-store pricing • boosting by weighted terms • down-boosting synonyms
  • 12. Payloads in Solr 01Traditional per-store pricing strategies • Explode docs: • num_docs=products * stores (1M products * 5000 stores could be up to 5B docs!) • query-time collapsing (by product id) • Explode fields: • default_price • store_price_0001 • store_price_0002 • … store_price_NNNN • query-time field choice • eg. up to 5000 fields per document
  • 13. Payloads in Solr 01 Payload-based per-store pricing • default_price • store_prices: • terms: STORE_0001… STORE_NNNN • per-term payload of price • One additional field • with up to num_stores terms/payloads
  • 15. Payloads in Solr 01 Down-boosting synonyms id,synonyms_with_payloads 99,tv synonyms.txt Television, Televisions, TV, TVs /select?wt=csv&fl=id,score&
 q={!payload_score 
 f=synonyms_with_payloads
 v=$payload_term
 func=max}
 &payload_term=television 
 id,score 99,0.1 &payload_term=tv id,score 99,1.0
  • 16. { "add-field-type": { "name": "synonyms_with_payloads", "stored": "true", "class": "solr.TextField", "positionIncrementGap": “100", "indexAnalyzer": { "tokenizer": { "class": "solr.StandardTokenizerFactory" }, "filters": [ { "class": "solr.SynonymGraphFilterFactory", "expand": "true", "ignoreCase": "true", "synonyms": "synonyms.txt" }, { "class": "solr.LowerCaseFilterFactory" }, { "class": "solr.NumericPayloadTokenFilterFactory", "payload": "0.1", "typeMatch": "SYNONYM" } ] }, ,"queryAnalyzer": { "tokenizer": { "class": "solr.StandardTokenizerFactory" }, "filters": [ { "class": "solr.LowerCaseFilterFactory" } ] } }}
  • 17. Payloads in Solr 01 Solr Integration • Schema-aware • DelimitedPayloadTokenFilter: • float, integer, identity • NumericPayloadTokenFilter: float • Function / Value Source • payload() • Query parsers • {!payload_score} • {!payload_check} • Default (data_driven) schema has built-in payload-enabled dynamic field mappings: • *_dpf, *_dpi, and *_dps
  • 18. Payloads in Solr 01 Solr features with payloads • searching (scoring by payload):
 q={!payload_score…} • searching (filtering by payload):
 fq={!frange cost=999 l=0 u=100}payload(…) • sorting:
 sort=payload(…) desc • faceting:
 facet.query={!frange 
 l=0 u=100 
 v=$payload_func} &payload_func=payload(…)
  • 19. Payloads in Solr 01 payload() • payload(field,
 term
 [,default_value
 [,min|max|average|first]]) • Operates on float or integer encoded payloads • Value source, returning a single float per-document • Multiple term matches are possible, returning the min, max, or average. first is a special short-circuit • If no term match for document, returns default value, or zero
  • 20. Payloads in Solr 01 payload() uses • &payload_function=payload(….) • Returning: 
 fl=payload_result:${payload_function} • Sorting:
 sort=${payload function} desc • Range faceting:
 facet.query={!frange 
 key=up_to_one_hundred
 l=0 u=100 v=$payload_function} • Matching: • without payload considered: term query, eg {!term} • with payloads factored: {!payload_check}
  • 21. Payloads in Solr 01 {!payload_score} • SpanQuery wrapping, payload-based scoring • SpanQuery support: currently SpanNearQuery of SpanTermQuery’s • scoring: • payload function: min, max, or average • includeSpanScore=true: multiples payload function result by base query scoring • with a simple term query, payload() function is equivalent (with includeSpanScore=false)
  • 22. Payloads in Solr 01 {!payload_score} examples {!payload_score 
 f=payloaded_field_name 
 v=term_value
 func=min|max|average [includeSpanScore=false] } {!payload_score
 f=vals_dpf 
 func=average
 v=weighted
 includeSpanScore=true}
  • 23. Payloads in Solr 01 {!xmlparser} • {!xmlparser}
 <BoostingTermQuery 
 fieldName="weighted_terms_dpf">
 weighted
 </BoostingTermQuery> • == {!payload_score f=weighted_terms_dpf func=average includeSpanScore=true}
  • 24. Payloads in Solr 01 {!payload_check} • SpanQuery wrapping, phrase relevancy scoring • SpanQuery support: currently SpanNearQuery of SpanTermQuery’s • matching: • matches when all terms match all corresponding payloads, in order • scoring: • uses SpanNearQuery’s score
  • 25. Payloads in Solr 01 {!payload_check} id,words_dps 99,taking|VERB the|ARTICLE train|NOUN q={!payload_check 
 f=words_dps 
 v=train
 payloads=NOUN} q={!payload_check 
 f=words_dps
 v='the train'
 payloads='ARTICLE NOUN'}
  • 26. Payloads in Solr 01 Payload Cons • payload(): if used as a {!func} q or facet.query it will compute value for ALL documents in index. To PostFilter fq payload function computation of just matching documents use {!frange} with payload() • Updating values • Atomic field update • (could multivalue and delete/add a single term|value)? • could mean updating all inventory for all stores for a single change • no current range faceting support (of functions in general)
  • 27. Payloads in Solr 01 What’s next • SOLR-10541 - “Range facet by function” • solves range faceting by payload • LUCENE-7854: term frequency “payload” • coming soon, see SOLR-11358 • OpenNLP types => payloads • Pluggable encoders/decoders?