Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Interfaces to Xapian
Open source search day 2009
C++
#include <xapian.h>
Xapian::WritableDatabase db(path, Xapian::DB_OPEN);
Xapian::Document doc;
doc.add_term(“foo”);
db....
Python: xapian
import xapian
db = xapian.WritableDatabase(path, xapian.DB_OPEN)
doc = xapian.Document()
doc.add_term(“foo”...
Python: xappy
from xappy import IndexerConnection, FieldActions
db = xappy.IndexerConnection(path)
db.add_field_action(“te...
Python: xappy
from xappy import IndexerConnection, FieldActions
db = xappy.IndexerConnection(path)
db.add_field_action(“te...
from xappy2.core import *
db = xappy.IndexerConnection(path)
db.add_field_type(“text”, TEXT, language=”french”)
db.add_ind...
Python: xappy2.server
REST based API
Python: xappy2.server
PUT to /v1/dbs/dbname
POST to /v1/dbs/dbname/schema/fields/text
{ 'type': 'text', 'freetext': {'lang...
Python: Zope: ore.xapian
Zope style layer on top of xappy:
class Content( object ):
... implements( interfaces.IIndexable ...
Python: Django: Djapian
Django integration layer on top of xapian
import djapian
class EntryIndexer(djapian.Indexer):
fiel...
Python: Django: Haystack
Another Django integration layer on top of xapian
from haystack import indexes
class TextIndex(in...
Other
Similar stack of interfaces for Ruby, PHP
Java, C# just have bindings, so far
Image Searching with Xappy
db.add_field_action('image', FieldActions.IMGSEEK,
terms = True)
doc.fields.append('image', pat...
Upcoming SlideShare
Loading in …5
×

Interfaces to xapian

1,344 views

Published on

Published in: Technology
  • Be the first to comment

Interfaces to xapian

  1. 1. Interfaces to Xapian Open source search day 2009
  2. 2. C++ #include <xapian.h> Xapian::WritableDatabase db(path, Xapian::DB_OPEN); Xapian::Document doc; doc.add_term(“foo”); db.add_document(doc);
  3. 3. Python: xapian import xapian db = xapian.WritableDatabase(path, xapian.DB_OPEN) doc = xapian.Document() doc.add_term(“foo”) db.add_document(doc)
  4. 4. Python: xappy from xappy import IndexerConnection, FieldActions db = xappy.IndexerConnection(path) db.add_field_action(“text”, FieldActions.INDEX_FREETEXT) doc = xappy.UnprocessedDocument() doc.append(“text”, “foo”) db.add(doc)
  5. 5. Python: xappy from xappy import IndexerConnection, FieldActions db = xappy.IndexerConnection(path) db.add_field_action(“text”, FieldActions.INDEX_FREETEXT, language=”french”) doc = xappy.UnprocessedDocument() doc.append(“text”, “foo”) db.add(doc)
  6. 6. from xappy2.core import * db = xappy.IndexerConnection(path) db.add_field_type(“text”, TEXT, language=”french”) db.add_index(“text”, StandardAnalyser) doc = xappy.UnprocessedDocument() doc.append(“text”, “foo”) db.add(doc) Python: xappy2.core
  7. 7. Python: xappy2.server REST based API
  8. 8. Python: xappy2.server PUT to /v1/dbs/dbname POST to /v1/dbs/dbname/schema/fields/text { 'type': 'text', 'freetext': {'language': 'en'} } } POST to /v1/dbs/dbname/docs { 'text': ['foo'] } (or PUT to /v1/dbs/dbname/docs/docid)
  9. 9. Python: Zope: ore.xapian Zope style layer on top of xappy: class Content( object ): ... implements( interfaces.IIndexable ) Asynchronous loading/updating, event integration, etc
  10. 10. Python: Django: Djapian Django integration layer on top of xapian import djapian class EntryIndexer(djapian.Indexer): fields=["text"] Tags=[ ("content", "content.text" ) ]
  11. 11. Python: Django: Haystack Another Django integration layer on top of xapian from haystack import indexes class TextIndex(indexes.SearchIndex): text = indexes.CharField(document=True, use_template=True)
  12. 12. Other Similar stack of interfaces for Ruby, PHP Java, C# just have bindings, so far
  13. 13. Image Searching with Xappy db.add_field_action('image', FieldActions.IMGSEEK, terms = True) doc.fields.append('image', path_to_image_file) db.add(doc) query = sconn.query_image_similarity('image', docid='0')

×