Your SlideShare is downloading. ×
  • Like
Using SweetSpotSimilarity for Solr Fulltext Indexing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Using SweetSpotSimilarity for Solr Fulltext Indexing

  • 125 views
Published

From a code4lib online lightning talk in 04/2011.

From a code4lib online lightning talk in 04/2011.

Published in Software , Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
125
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Using SweetSpotSimilarity for Solr Fulltext Indexing (A Public Service Message) Jay Luker SAO/NASA Astrophysics Data System http://adsabs.harvard.edu/
  • 2. From http://lucene.apache.org/java/2_9_3/api/all/org/apache/lucene/search/Similarity.html Score for a particular result Buncha stuff you probably ought to read up on. "encapsulates a few (indexing time) boost and length factors" {
  • 3. norm(t,d) Includes... ● Document boost - e.g. <doc boost="2.5"> ● Field boost - e.g. <field boost="3.0"> and what we're concerned with... ● lengthNorm(field) - computed at index time based on the number of tokens in the field of the input document. These factors, multiplied together, make up the norm(t, d) for a given document
  • 4. lengthNorm(String fieldName, int numTokens) "Matches in longer fields are less precise, so implementations of this method usually return smaller values when numTokens is large, and larger values when numTokens is small." Translation: SHORTER DOCUMENTS SCORE HIGHER from the javadoc:
  • 5. changes this ... to this ... lengthNorm(L) = 1 sqrt(L) SweetSpotSimilarity lucene/contrib/misc/... lengthNorm(L) = 1 sqrt(steepness*(|L-min|+|L-max|-(max-min))+1)
  • 6. min/max = your "sweet spot" range. Lengths within this range compute to a constant, i.e., 1. steepness = controls the curve up to and down from the sweet spot "plateau".
  • 7. (termcounts for all ADS's searchable fulltext since 01/2000)
  • 8. <similarity class="org.ads.solr.SweetSpotSimilarityFactory"> <str name="min">1000</str> <str name="max">20000</str> <str name="steepness">0.5</str> </similarity> In schema.xml
  • 9. public class SweetSpotSimilarityFactory extends SimilarityFactory { public static final Logger log = LoggerFactory.getLogger(SolrResourceLoader.class); @Override public Similarity getSimilarity() { SweetSpotSimilarity sim = new SweetSpotSimilarity(); int max = this.params.getInt("max"); int min = this.params.getInt("min"); float steepness = this.params.getFloat("steepness"); log.info("max: " + max); log.info("min: " + min); log.info("steepness: " + steepness); // yuck! hardcoded field settings for now sim.setLengthNormFactors("body", min, max, steepness, true); return sim; } }
  • 10. Thanks! Further reading: "Lucene and Juru at TREC 2007: 1-Million Queries Track" http://trec.nist.gov/pubs/trec16/papers/ibm-haifa.mq.final.pdf Also, check out our Blacklight beta search! http://labs.adsabs.harvard.edu/fulltext