Djapian

High level Xapian integration for Django
Download

Djapian Ranking & Summary

Advertisement

  • Rating:
  • License:
  • BSD License
  • Price:
  • FREE
  • Publisher Name:
  • Alex Koshelev
  • Publisher web site:
  • http://code.google.com/u/rafaeljsg14/

Djapian Tags


Djapian Description

High level Xapian integration for Django Djapian is a Python package to allow full text search in your Django Project.Usage example:Assume that we have this models in our imaginary application:class Person(models.Model): name = models.CharField(max_length=150) def __unicode__(self): return self.nameclass Entry(models.Model): author = models.ForeignKey(Person, related_name="entries") title = models.CharField(max_length=250) created_on = models.DateTimeField(default=datetime.now) is_active = models.BooleanField(default=True) text = models.TextField() editors = models.ManyToManyField(Person, related_name="edited_entries") def headline(self): return "%s - %s" % (self.author, self.title) def __unicode__(self): return self.titleAnd we want to apply indexing functionality for model Entry. The next step is to create Indexer instance with proper settings. Indexer may look like this:entry_indexer = Indexer( model=Entry, fields=, tags=, trigger=lambda obj: obj.is_active, )In the django shell create some instances of models:>>> p = Person.objects.create(name="Alex")>>> Entry.objects.create(author=p, title="Test entry", text="Not large text field")>>> Entry.objects.create(author=p, title="Another test entry", is_active=False)>>> Entry.objects.create(author=p, title="Third small entry", text="Some another text")>>> Entry.indexer.update()Thats all! Each Entry instance has been indexed and now ready for search. Let's try:>>> result = Entry.indexer.search('title:entry')>>> len(result)3>>> for row in result:... row.instance.headline()... Alex - Test entryAlex - Another test entryAlex - Third small entry Requirements: · Django · Xapian and Omega · Xapian-bindings with Python enabled · Python


Djapian Related Software