plugin_solr.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import pysolr
  2. """
  3. index and query mapi fields via python-pysolr
  4. note how simple this is compared to the xapian plugin.
  5. """
  6. class Plugin:
  7. def __init__(self, index_path, log):
  8. self.log = log
  9. self.solr = pysolr.Solr(index_path)
  10. self.data = []
  11. def extract_terms(self, text):
  12. return text.split()
  13. def search(self, server_guid, store_guid, folder_ids, fields_terms, query, log):
  14. log.info('performing query: %s', query)
  15. return [r['docid'] for r in self.solr.search(query, fl=['docid'])]
  16. def suggest(self, server_guid, store_guid, terms, orig, log):
  17. return orig
  18. def update(self, doc):
  19. self.data.append(doc)
  20. def delete(self, doc):
  21. self.commit()
  22. self.solr.delete(q='sourcekey:%s' % doc['sourcekey'])
  23. def commit(self):
  24. if self.data:
  25. try:
  26. self.solr.add(self.data)
  27. finally:
  28. self.data = []
  29. self.charcount = 0
  30. def reindex(self, server_guid, store_guid):
  31. pass