SlideShare a Scribd company logo
1 of 41
d35xp


                    W.Meints

         Search enabled
        applications with
           Lucene.NET
Agenda


               Introduction   Technical bits




               Inspiration


 #ISKALUCENE
Google has ruined search for
everyone
This is what you often build
as a developer. Because the
         user wants it.
Three reasons why search sometimes
sucks
• Can I even search?
  • The number one reason, because sometimes it’s not there or it is
    there, but you cannot see it is there. Confusing stuff!


• The search form is too complicated
  • I need to be an expert to find something I don’t know is there…. Good
    thinking!

• The search engine is too slow
  • They sometimes warn you about this (why?!)
Three reasons why search sometimes
sucks
• I am not going to address all of these issues today.

• The focus of this talk is on the technical stuff, which solves
   • Having to use complex search forms to find something
   • Having to wait a long time before you find something (hopefully).

• Usability of search engines is something I could talk about for a
  very long time too… but not today.
This is what we expect to see today
Implementing proper search functionality

  Simplicity is key


  Gives the right
     answers


Allows me to refine
What search is today
Search is hard on the
developer. It involves a lot of
things:

• Linguistics
• Psychology
• Information analysis
• Computer science
• Complex math
Lucene.NET as a possible solution
• Lucene.NET is derived from
  its Java cousin Lucene.

• Compact search engine that
  offers a solution to most of
  your search problems.

• Best of all. It is free.
Getting started with lucene.NET




                         Getting started
Overview of Lucene
• Lucene provides the core
  things you need to build a
  search system

• It does not:
   • Contain a search results page.
   • Parse HTML, Word, Excel, etc.
This is what is in the box
• Text analyzer
  • Splits text in searchable terms
  • Filters out stopwords (if you
    want)

• QueryParser
  • Common syntax without
    needing to learn anything

• IndexSearcher
  • The goods, THE thing to have.
This is what is in the box
• IndexReader
   • Reads everything from the
     index

• IndexWriter
   • Stores documents and fields

• Directory
   • The index itself, comes in many
     sizes and shapes
A standard recipe for building search

1                     2                          3

Build an index with   Build a query from the     Get results and present
content you want to   question the user asked.   them to the user.
search through.
A standard recipe for building search

1                     2                          3

Build an index with   Build a query from the     Get results and present
content you want to   question the user asked.   them to the user.
search through.
Step 1: Building an index
• The lucene search index is nothing like your average database!

• Storage happens in key/value pairs

• Most of the time nothing is stored and you can still search for it
   • The engine stores hashes of content
   • Only when you ask it to store, it stores something
Step 1: Building an index
• The Lucene indexing uses a tree like index structure

    Doc #1      Doc #2      Doc #3   Each document gets its own segment initially


                                     Segments get merged during optimization cycles
      Merged #1 + #2



               Full index            Finally everything is merged back into one big pile.
Step 1: Building an index
• Reasons for going in this direction:
   • Segments are small, and update very fast.
   • Searching many segments is slower than one bigger segments

• Overall, a merging segments index is more scalable and easier
  to implement than a B-tree index that is used elsewhere.
Step 1: Building an index

                              Analyzer




   Your Parser    Document   IndexWriter



                     Field

                     Field    Directory
A standard recipe for building search

1                     2                          3

Build an index with   Build a query from the     Get results and present
content you want to   question the user asked.   them to the user.
search through.
Step 2: Building queries
• Querying Lucene.NET is done through the IndexSearcher for
  almost every scenario you can think of.

• There’s a number of possible options for queries:
  • Hand build a query using BooleanQuery, TermQuery or another query
    type
  • Let lucene decide which would best fit by parsing the query.
Step 2: Building queries

“Some      QueryParser   Query   IndexSearcher

text”

            Analyzer
Step 2: Building queries
• There’s a standard QueryParser, but you can also use the
  MultiFieldQueryParser

• The MultiFieldQueryParser allows you to build a query across
  multiple fields at once.
Step 2: Building queries
• Using the QueryParser and analyzer to get a good query for the
  search engine is one way of going at it.

• Other query types include:
  • BooleanQuery – Terms must, should or must not appear in the
    document
  • TermQuery – Look for a single term
  • SpanQuery – Find terms that are close together in the text

    Please note: You can combine!
Step 2: Building queries
• SpanQuery is a little weird, it allows you to find terms close
  together in a piece of text. For example:

             “The lazy fox jumps over the quick brown dog”
             “The quick brown fox jumps over the lazy dog”

                               The second sentence is the one you want. The first one is
                                sort of correct, but a little funky. Since when did the dog
                                               become brown and quick??
A standard recipe for building search

1                     2                          3

Build an index with   Build a query from the     Get results and present
content you want to   question the user asked.   them to the user.
search through.
Step 3: Getting results
• With indexed content and a the right query, you can get the
  answer to everything (Which by the way, might not be 42…)

• The IndexSearcher is used to find the answer to your query.
Step 3: Getting results

              Query       IndexSearcher




                          IndexReader




                            Directory
Step 3: Getting results
• Documents are matched against your query using complex
  math.

• A TF-IDF algorithm is used to determine how well the document
  matches the query.

• You have been warned! This is complex stuff.
Step 3: Getting results
• In the demo I showed you the basic form of finding documents.
• There’s more to the Search method than meets the eye!

• Depending on your needs, you may have to use a collector.
  • A collector optimizes the way you retrieve documents from the index
Step 3: Getting results
• Need to find documents in ranked order?
  • Use the default method or use a TopDocsCollector

• Need to sort the documents in a particular order?
  • Use the TopFieldsCollector instead.
  • This collector is optimized for sorting fields
Step 3: Getting results
• Don’t want documents that have nothing to do with what you
  asked for in the first place?
  • Use a PositiveScoresOnlyCollector
  • Matches documents with score > 0




    Use this only when you have a
            smaller index.
A standard recipe for building search

1                           2                        3

Build an index with         Build a query            Get results
content
                            QueryParser              IndexSearcher
IndexWriter                 MultiFieldQueryParser    Collector
Document
                            Choose the right query   Choose the right collector
Think about Store / Index   type!                    for better performance!
settings on your fields!
Good to go
• Now that you know how Lucene.NET works I think it is time to
  show you a few other things…
Categorize content based on previous
content
    ?
                 IndexSearcher


         Body




                 Probably a good
                    candidate!     Label          Occurences
                                   Search         180
                                   Requirements   40
                                   Other label    12
Detecting plagiarized content
                                                               ?
                                                   Lucene in action

                                   IndexSearcher
                                                                      ?
Potential problematic document
Field      Value
                                                          Lucene in Orchard
Title      Lucene.NET in action
Body       Lorem ipsum stuff and
           more about that
           Lucene thingie.
Tags       Search, Lucene, .NET,
           C#
Spell check content
• You can spell check a document based on what others wrote.
  • Very similar to categorization, but instead of checking the highest hit for
    a single field, check which word matches best for the term at hand.

  • Uses an n-gram structure and the Levenshtein distance algorithm
    (sounds good, doesn’t it?)

  • Do NOT build this yourself, but download here:
    https://nuget.org/packages/Lucene.Net.Contrib/3.0.3
Play jeopardy?
• The IBM Watson super
  computer uses Lucene
By the way…
• Endeavour knowNow uses Lucene.NET

• And there are more devs using it.
   • Twitter uses Lucene for realtime search
   • StackOverflow uses Lucene for searching questions
   • RavenDB uses Lucene as their primary storage mechanism

• Give it a try, you might be surprised!
http://www.fizzylogic.nl/


@wmeints

More Related Content

Similar to Search enabled applications with lucene.net

Lucene Bootcamp - 2
Lucene Bootcamp - 2Lucene Bootcamp - 2
Lucene Bootcamp - 2GokulD
 
Dice.com Bay Area Search - Beyond Learning to Rank Talk
Dice.com Bay Area Search - Beyond Learning to Rank TalkDice.com Bay Area Search - Beyond Learning to Rank Talk
Dice.com Bay Area Search - Beyond Learning to Rank TalkSimon Hughes
 
Introduction to Information Retrieval
Introduction to Information RetrievalIntroduction to Information Retrieval
Introduction to Information RetrievalCarsten Eickhoff
 
Full Text Search with Lucene
Full Text Search with LuceneFull Text Search with Lucene
Full Text Search with LuceneWO Community
 
RecSys 2015 Tutorial – Scalable Recommender Systems: Where Machine Learning...
 RecSys 2015 Tutorial – Scalable Recommender Systems: Where Machine Learning... RecSys 2015 Tutorial – Scalable Recommender Systems: Where Machine Learning...
RecSys 2015 Tutorial – Scalable Recommender Systems: Where Machine Learning...S. Diana Hu
 
RecSys 2015 Tutorial - Scalable Recommender Systems: Where Machine Learning m...
RecSys 2015 Tutorial - Scalable Recommender Systems: Where Machine Learning m...RecSys 2015 Tutorial - Scalable Recommender Systems: Where Machine Learning m...
RecSys 2015 Tutorial - Scalable Recommender Systems: Where Machine Learning m...Joaquin Delgado PhD.
 
Illuminating Lucene.Net
Illuminating Lucene.NetIlluminating Lucene.Net
Illuminating Lucene.NetDean Thrasher
 
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...Lucidworks
 
Hacking Lucene and Solr for Fun and Profit
Hacking Lucene and Solr for Fun and ProfitHacking Lucene and Solr for Fun and Profit
Hacking Lucene and Solr for Fun and Profitlucenerevolution
 
Sugblr sitecore search - absolute basics
Sugblr sitecore search - absolute basicsSugblr sitecore search - absolute basics
Sugblr sitecore search - absolute basicsAnindita Bhattacharya
 
Intro to Solr in Drupal
Intro to Solr in Drupal Intro to Solr in Drupal
Intro to Solr in Drupal Mediacurrent
 
Summon @ LBSU
Summon @ LBSUSummon @ LBSU
Summon @ LBSUProQuest
 
O'Reilly Strata: Distilling Data Exhaust
O'Reilly Strata: Distilling Data ExhaustO'Reilly Strata: Distilling Data Exhaust
O'Reilly Strata: Distilling Data ExhaustPeter Skomoroch
 
Indexing Techniques: Their Usage in Search Engines for Information Retrieval
Indexing Techniques: Their Usage in Search Engines for Information RetrievalIndexing Techniques: Their Usage in Search Engines for Information Retrieval
Indexing Techniques: Their Usage in Search Engines for Information RetrievalVikas Bhushan
 
NEEShub – Final Recommendations
NEEShub – Final RecommendationsNEEShub – Final Recommendations
NEEShub – Final RecommendationsEvan
 
Navigating the Mess of a Shared drive Migration to SharePoint
Navigating the Mess of a Shared drive Migration to SharePointNavigating the Mess of a Shared drive Migration to SharePoint
Navigating the Mess of a Shared drive Migration to SharePointJoanne Klein
 
Lucene for Solr Developers
Lucene for Solr DevelopersLucene for Solr Developers
Lucene for Solr DevelopersErik Hatcher
 
Deep-Dive to Azure Search
Deep-Dive to Azure SearchDeep-Dive to Azure Search
Deep-Dive to Azure SearchGunnar Peipman
 

Similar to Search enabled applications with lucene.net (20)

Lucene Bootcamp - 2
Lucene Bootcamp - 2Lucene Bootcamp - 2
Lucene Bootcamp - 2
 
Dice.com Bay Area Search - Beyond Learning to Rank Talk
Dice.com Bay Area Search - Beyond Learning to Rank TalkDice.com Bay Area Search - Beyond Learning to Rank Talk
Dice.com Bay Area Search - Beyond Learning to Rank Talk
 
Introduction to Information Retrieval
Introduction to Information RetrievalIntroduction to Information Retrieval
Introduction to Information Retrieval
 
Full Text Search with Lucene
Full Text Search with LuceneFull Text Search with Lucene
Full Text Search with Lucene
 
RecSys 2015 Tutorial – Scalable Recommender Systems: Where Machine Learning...
 RecSys 2015 Tutorial – Scalable Recommender Systems: Where Machine Learning... RecSys 2015 Tutorial – Scalable Recommender Systems: Where Machine Learning...
RecSys 2015 Tutorial – Scalable Recommender Systems: Where Machine Learning...
 
RecSys 2015 Tutorial - Scalable Recommender Systems: Where Machine Learning m...
RecSys 2015 Tutorial - Scalable Recommender Systems: Where Machine Learning m...RecSys 2015 Tutorial - Scalable Recommender Systems: Where Machine Learning m...
RecSys 2015 Tutorial - Scalable Recommender Systems: Where Machine Learning m...
 
Illuminating Lucene.Net
Illuminating Lucene.NetIlluminating Lucene.Net
Illuminating Lucene.Net
 
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
 
Hacking Lucene and Solr for Fun and Profit
Hacking Lucene and Solr for Fun and ProfitHacking Lucene and Solr for Fun and Profit
Hacking Lucene and Solr for Fun and Profit
 
Sitecore search absolute basics
Sitecore search absolute basicsSitecore search absolute basics
Sitecore search absolute basics
 
Sugblr sitecore search - absolute basics
Sugblr sitecore search - absolute basicsSugblr sitecore search - absolute basics
Sugblr sitecore search - absolute basics
 
Intro to Solr in Drupal
Intro to Solr in Drupal Intro to Solr in Drupal
Intro to Solr in Drupal
 
Itct year1 mitchell
Itct year1 mitchellItct year1 mitchell
Itct year1 mitchell
 
Summon @ LBSU
Summon @ LBSUSummon @ LBSU
Summon @ LBSU
 
O'Reilly Strata: Distilling Data Exhaust
O'Reilly Strata: Distilling Data ExhaustO'Reilly Strata: Distilling Data Exhaust
O'Reilly Strata: Distilling Data Exhaust
 
Indexing Techniques: Their Usage in Search Engines for Information Retrieval
Indexing Techniques: Their Usage in Search Engines for Information RetrievalIndexing Techniques: Their Usage in Search Engines for Information Retrieval
Indexing Techniques: Their Usage in Search Engines for Information Retrieval
 
NEEShub – Final Recommendations
NEEShub – Final RecommendationsNEEShub – Final Recommendations
NEEShub – Final Recommendations
 
Navigating the Mess of a Shared drive Migration to SharePoint
Navigating the Mess of a Shared drive Migration to SharePointNavigating the Mess of a Shared drive Migration to SharePoint
Navigating the Mess of a Shared drive Migration to SharePoint
 
Lucene for Solr Developers
Lucene for Solr DevelopersLucene for Solr Developers
Lucene for Solr Developers
 
Deep-Dive to Azure Search
Deep-Dive to Azure SearchDeep-Dive to Azure Search
Deep-Dive to Azure Search
 

More from Willem Meints

Bestuur je 3D printer met blazor
Bestuur je 3D printer met blazorBestuur je 3D printer met blazor
Bestuur je 3D printer met blazorWillem Meints
 
Help et phone home, building bots with Microsoft Bot Framework 4.
Help et phone home, building bots with Microsoft Bot Framework 4.Help et phone home, building bots with Microsoft Bot Framework 4.
Help et phone home, building bots with Microsoft Bot Framework 4.Willem Meints
 
Big data streaming with Apache Spark on Azure
Big data streaming with Apache Spark on AzureBig data streaming with Apache Spark on Azure
Big data streaming with Apache Spark on AzureWillem Meints
 
Agile software ontwikkeling met continuous delivery
Agile software ontwikkeling met continuous deliveryAgile software ontwikkeling met continuous delivery
Agile software ontwikkeling met continuous deliveryWillem Meints
 
Acceptance test driven development
Acceptance test driven developmentAcceptance test driven development
Acceptance test driven developmentWillem Meints
 
Build better mobile apps and become a better person
Build better mobile apps and become a better personBuild better mobile apps and become a better person
Build better mobile apps and become a better personWillem Meints
 
Prototyping windows store apps
Prototyping windows store appsPrototyping windows store apps
Prototyping windows store appsWillem Meints
 
Using java interop in your xamarin.android apps
Using java interop in your xamarin.android appsUsing java interop in your xamarin.android apps
Using java interop in your xamarin.android appsWillem Meints
 
The metro design language for app developers
The metro design language for app developersThe metro design language for app developers
The metro design language for app developersWillem Meints
 

More from Willem Meints (11)

Bestuur je 3D printer met blazor
Bestuur je 3D printer met blazorBestuur je 3D printer met blazor
Bestuur je 3D printer met blazor
 
Help et phone home, building bots with Microsoft Bot Framework 4.
Help et phone home, building bots with Microsoft Bot Framework 4.Help et phone home, building bots with Microsoft Bot Framework 4.
Help et phone home, building bots with Microsoft Bot Framework 4.
 
Big data streaming with Apache Spark on Azure
Big data streaming with Apache Spark on AzureBig data streaming with Apache Spark on Azure
Big data streaming with Apache Spark on Azure
 
Agile software ontwikkeling met continuous delivery
Agile software ontwikkeling met continuous deliveryAgile software ontwikkeling met continuous delivery
Agile software ontwikkeling met continuous delivery
 
Acceptance test driven development
Acceptance test driven developmentAcceptance test driven development
Acceptance test driven development
 
LESS is more
LESS is moreLESS is more
LESS is more
 
Build better mobile apps and become a better person
Build better mobile apps and become a better personBuild better mobile apps and become a better person
Build better mobile apps and become a better person
 
Mono for android
Mono for androidMono for android
Mono for android
 
Prototyping windows store apps
Prototyping windows store appsPrototyping windows store apps
Prototyping windows store apps
 
Using java interop in your xamarin.android apps
Using java interop in your xamarin.android appsUsing java interop in your xamarin.android apps
Using java interop in your xamarin.android apps
 
The metro design language for app developers
The metro design language for app developersThe metro design language for app developers
The metro design language for app developers
 

Search enabled applications with lucene.net

  • 1. d35xp W.Meints Search enabled applications with Lucene.NET
  • 2. Agenda Introduction Technical bits Inspiration #ISKALUCENE
  • 3. Google has ruined search for everyone
  • 4. This is what you often build as a developer. Because the user wants it.
  • 5. Three reasons why search sometimes sucks • Can I even search? • The number one reason, because sometimes it’s not there or it is there, but you cannot see it is there. Confusing stuff! • The search form is too complicated • I need to be an expert to find something I don’t know is there…. Good thinking! • The search engine is too slow • They sometimes warn you about this (why?!)
  • 6. Three reasons why search sometimes sucks • I am not going to address all of these issues today. • The focus of this talk is on the technical stuff, which solves • Having to use complex search forms to find something • Having to wait a long time before you find something (hopefully). • Usability of search engines is something I could talk about for a very long time too… but not today.
  • 7. This is what we expect to see today
  • 8. Implementing proper search functionality Simplicity is key Gives the right answers Allows me to refine
  • 9. What search is today Search is hard on the developer. It involves a lot of things: • Linguistics • Psychology • Information analysis • Computer science • Complex math
  • 10. Lucene.NET as a possible solution • Lucene.NET is derived from its Java cousin Lucene. • Compact search engine that offers a solution to most of your search problems. • Best of all. It is free.
  • 11. Getting started with lucene.NET Getting started
  • 12. Overview of Lucene • Lucene provides the core things you need to build a search system • It does not: • Contain a search results page. • Parse HTML, Word, Excel, etc.
  • 13. This is what is in the box • Text analyzer • Splits text in searchable terms • Filters out stopwords (if you want) • QueryParser • Common syntax without needing to learn anything • IndexSearcher • The goods, THE thing to have.
  • 14. This is what is in the box • IndexReader • Reads everything from the index • IndexWriter • Stores documents and fields • Directory • The index itself, comes in many sizes and shapes
  • 15. A standard recipe for building search 1 2 3 Build an index with Build a query from the Get results and present content you want to question the user asked. them to the user. search through.
  • 16. A standard recipe for building search 1 2 3 Build an index with Build a query from the Get results and present content you want to question the user asked. them to the user. search through.
  • 17. Step 1: Building an index • The lucene search index is nothing like your average database! • Storage happens in key/value pairs • Most of the time nothing is stored and you can still search for it • The engine stores hashes of content • Only when you ask it to store, it stores something
  • 18. Step 1: Building an index • The Lucene indexing uses a tree like index structure Doc #1 Doc #2 Doc #3 Each document gets its own segment initially Segments get merged during optimization cycles Merged #1 + #2 Full index Finally everything is merged back into one big pile.
  • 19. Step 1: Building an index • Reasons for going in this direction: • Segments are small, and update very fast. • Searching many segments is slower than one bigger segments • Overall, a merging segments index is more scalable and easier to implement than a B-tree index that is used elsewhere.
  • 20. Step 1: Building an index Analyzer Your Parser Document IndexWriter Field Field Directory
  • 21. A standard recipe for building search 1 2 3 Build an index with Build a query from the Get results and present content you want to question the user asked. them to the user. search through.
  • 22. Step 2: Building queries • Querying Lucene.NET is done through the IndexSearcher for almost every scenario you can think of. • There’s a number of possible options for queries: • Hand build a query using BooleanQuery, TermQuery or another query type • Let lucene decide which would best fit by parsing the query.
  • 23. Step 2: Building queries “Some QueryParser Query IndexSearcher text” Analyzer
  • 24. Step 2: Building queries • There’s a standard QueryParser, but you can also use the MultiFieldQueryParser • The MultiFieldQueryParser allows you to build a query across multiple fields at once.
  • 25. Step 2: Building queries • Using the QueryParser and analyzer to get a good query for the search engine is one way of going at it. • Other query types include: • BooleanQuery – Terms must, should or must not appear in the document • TermQuery – Look for a single term • SpanQuery – Find terms that are close together in the text Please note: You can combine!
  • 26. Step 2: Building queries • SpanQuery is a little weird, it allows you to find terms close together in a piece of text. For example: “The lazy fox jumps over the quick brown dog” “The quick brown fox jumps over the lazy dog” The second sentence is the one you want. The first one is sort of correct, but a little funky. Since when did the dog become brown and quick??
  • 27. A standard recipe for building search 1 2 3 Build an index with Build a query from the Get results and present content you want to question the user asked. them to the user. search through.
  • 28. Step 3: Getting results • With indexed content and a the right query, you can get the answer to everything (Which by the way, might not be 42…) • The IndexSearcher is used to find the answer to your query.
  • 29. Step 3: Getting results Query IndexSearcher IndexReader Directory
  • 30. Step 3: Getting results • Documents are matched against your query using complex math. • A TF-IDF algorithm is used to determine how well the document matches the query. • You have been warned! This is complex stuff.
  • 31. Step 3: Getting results • In the demo I showed you the basic form of finding documents. • There’s more to the Search method than meets the eye! • Depending on your needs, you may have to use a collector. • A collector optimizes the way you retrieve documents from the index
  • 32. Step 3: Getting results • Need to find documents in ranked order? • Use the default method or use a TopDocsCollector • Need to sort the documents in a particular order? • Use the TopFieldsCollector instead. • This collector is optimized for sorting fields
  • 33. Step 3: Getting results • Don’t want documents that have nothing to do with what you asked for in the first place? • Use a PositiveScoresOnlyCollector • Matches documents with score > 0 Use this only when you have a smaller index.
  • 34. A standard recipe for building search 1 2 3 Build an index with Build a query Get results content QueryParser IndexSearcher IndexWriter MultiFieldQueryParser Collector Document Choose the right query Choose the right collector Think about Store / Index type! for better performance! settings on your fields!
  • 35. Good to go • Now that you know how Lucene.NET works I think it is time to show you a few other things…
  • 36. Categorize content based on previous content ? IndexSearcher Body Probably a good candidate! Label Occurences Search 180 Requirements 40 Other label 12
  • 37. Detecting plagiarized content ? Lucene in action IndexSearcher ? Potential problematic document Field Value Lucene in Orchard Title Lucene.NET in action Body Lorem ipsum stuff and more about that Lucene thingie. Tags Search, Lucene, .NET, C#
  • 38. Spell check content • You can spell check a document based on what others wrote. • Very similar to categorization, but instead of checking the highest hit for a single field, check which word matches best for the term at hand. • Uses an n-gram structure and the Levenshtein distance algorithm (sounds good, doesn’t it?) • Do NOT build this yourself, but download here: https://nuget.org/packages/Lucene.Net.Contrib/3.0.3
  • 39. Play jeopardy? • The IBM Watson super computer uses Lucene
  • 40. By the way… • Endeavour knowNow uses Lucene.NET • And there are more devs using it. • Twitter uses Lucene for realtime search • StackOverflow uses Lucene for searching questions • RavenDB uses Lucene as their primary storage mechanism • Give it a try, you might be surprised!

Editor's Notes

  1. Demo geven over het bouwen van eenzoekindex + Uitlegbij de RecipeBrowser application.
  2. Demo: Queries parsen en uitleggen in een unit-test.
  3. Demo: SpanQuerylatenzien.
  4. Demo: IndexSearcher + ResultsCollector.