Full­text searching with Marjory




               Markus Wolff




                     
What's Marjory?

        A webservice for full­text indexing and 
    


        searching of documents
        Written i...
How does Marjory work?
                                Your application



                                 Sends search 
...
Features

        Search engine abstraction
    


            use the engine that suits your needs, just write a 
      ...
More features

        Two ways to index documents:
    


            submit an XML snippet containing any content you 
...
Even more features

        Index documents asynchronously using Dropr 
    


        as a messaging service
           ...
Latest additions

        Search results as a Dojo.Data compatible 
    


        JSON data source
        API exposure ...
How to add a catalog

        Send a POST request to:
    


        http://marjory.example.com/rest/catalog/
        Con...
Adding a document

        Make a POST request to:
    


        http://marjory.example.com/rest/add/
        Send the d...
Adding a document, the easy way

        Or, if Marjory should retrieve and parse the 
    


        document:
    <add ...
Searching for documents

        Make a GET request including the query terms:
    

        http://marjory.example.com/r...
Search response format

<?xml version=quot;1.0quot; encoding=quot;UTF­8quot;?>
<response>
  <responseHeader>
    <status>0...
Looks familiar?

        Blatantly stolen from Solr :­)
    



        Why reinvent the wheel?
    



        Makes sw...
Access control

        No access control provided by Marjory
    



        Use your webserver's authentication and ACL...
Things to do

        Fully unit­test the beast
    



        Add a nice admin GUI (currently in progress)
    



   ...
Is it production­ready?

        Yes, and it's already being used on production 
    


        websites




            ...
That's all, folks!

        More information:
    


            http://code.google.com/p/marjory/
        



         ...
Upcoming SlideShare
Loading in...5
×

Search As A Service

582
-1

Published on

A presentation I gave at the International PHP Conference 2008 in Mainz, Germany.

Marjory is a webservice for building and searching in full text indexes, implemented in PHP.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
582
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Search As A Service

  1. 1. Full­text searching with Marjory Markus Wolff    
  2. 2. What's Marjory? A webservice for full­text indexing and   searching of documents Written in PHP  Based on Zend Framework  (Very) Roughly comparable to Solr  BSD­licensed, available on Google Code     
  3. 3. How does Marjory work? Your application Sends search  Sends Document data Returns result in desired terms via GET or location via POST output format (default: XML) Marjory (ReST­based webservice) Stores document data Returns query Queries search in search engine results engine Search engine     (Default: Lucene)
  4. 4. Features Search engine abstraction  use the engine that suits your needs, just write a   small adaptor class Zend_Search_Lucene built­in by default  Multiple search catalogs  Index many sites with one dedicated search server  Put all documents matching any criteria into   separate search indexes to speed up search    
  5. 5. More features Two ways to index documents:  submit an XML snippet containing any content you   want to index or, just submit an URI (valid PHP stream resource)   and let Marjory extract the content from the  document HTML supported by default (for now)  add your own document parser class to extract plain text   from any other document format (or special markup  structures)    
  6. 6. Even more features Index documents asynchronously using Dropr   as a messaging service Dropr: PHP­based durable messaging service  Example webservice and Dropr client included with   Marjory Application does not need to wait for document   retrieval, parsing and adding to the index More info: www.dropr.org     
  7. 7. Latest additions Search results as a Dojo.Data compatible   JSON data source API exposure via JSON­RPC as alternative to   XML over ReST (experimental!)    
  8. 8. How to add a catalog Send a POST request to:  http://marjory.example.com/rest/catalog/ Containing this XML snippet:  <add catalog=quot;MyGloriousCatalogquot; /> Et voilá, you got yourself a new search index     
  9. 9. Adding a document Make a POST request to:  http://marjory.example.com/rest/add/ Send the document content as XML like this:  <add catalog=quot;defaultquot;> <doc uri=quot;MyUniqueDocumentIdquot;>     <field name=quot;titlequot;>Marjory: Search as a service</field>     <field name=quot;abstractquot;> An epic novel about full­text indexing in an SOA environment     </field>     <field name=quot;contentquot;>Lorem ipsum dolor sit amet... (to be continued)</field>  </doc> </add>    
  10. 10. Adding a document, the easy way Or, if Marjory should retrieve and parse the   document: <add catalog=quot;defaultquot;>   <doc src=quot;http://my.website.tld/my/document.htmlquot; /> </add> If you have many and/or complex documents,   better use Dropr to send messages to Marjory    
  11. 11. Searching for documents Make a GET request including the query terms:  http://marjory.example.com/rest/select?q=Marjory Additional parameters to...  Limit number of results  Include only specific fields in response  Specify a search catalog  Default catalog name: „default“ ­ who would have   guessed?    
  12. 12. Search response format <?xml version=quot;1.0quot; encoding=quot;UTF­8quot;?> <response>   <responseHeader>     <status>0</status><QTime>1</QTime>   </responseHeader>   <result numFound=quot;2quot; start=quot;0quot;>    <doc>     <str name=quot;idquot;>MA147LL/A</str>     <str name=quot;namequot;>Apple 60 GB iPod Black</str>    </doc>    <doc>     <str name=quot;idquot;>EN7800GTX/2DHTV/256M</str>     <str name=quot;namequot;>ASUS Extreme N7800GTX</str>    </doc>   </result> </response>    
  13. 13. Looks familiar? Blatantly stolen from Solr :­)  Why reinvent the wheel?  Makes switching between the two projects easy   if need be Don't like it? Try JSON­RPC instead.     
  14. 14. Access control No access control provided by Marjory  Use your webserver's authentication and ACL   capabilities There are currently no plans to add anything   built­in, unless someone convinces me  otherwise :­)    
  15. 15. Things to do Fully unit­test the beast  Add a nice admin GUI (currently in progress)  Add other engines  Support more document formats out of the box  (PDF likely to be next addition) Fine­tuning (how about renaming or removing   catalogs, for example?)    
  16. 16. Is it production­ready? Yes, and it's already being used on production   websites    
  17. 17. That's all, folks! More information:  http://code.google.com/p/marjory/  http://www.dropr.org/  http://blog.wolff­hamburg.de/     
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×