summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-10-10 14:14:42 +0200
committerDuda Dornelles <ddornell@thoughtworks.com>2014-10-10 14:14:46 +0200
commit622631a2007c60a4bf34ca1ce0713b339180e435 (patch)
tree2ca525a69e3dc020d9e966975a20805acfabb0fd /service/pixelated
parent6b2bf282db6d889e633af6b8771d2393c335131d (diff)
Using file index for whoosh and fixing functional tests
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/adapter/search.py20
1 files changed, 10 insertions, 10 deletions
diff --git a/service/pixelated/adapter/search.py b/service/pixelated/adapter/search.py
index 6c64cc40..e68e8111 100644
--- a/service/pixelated/adapter/search.py
+++ b/service/pixelated/adapter/search.py
@@ -1,12 +1,17 @@
+import os
+import whoosh.index
from whoosh.fields import *
-from whoosh.filedb.filestore import RamStorage
from whoosh.qparser import QueryParser
class SearchEngine(object):
__slots__ = '_index'
+ INDEX_FOLDER = '~/.leap/search_index'
+
def __init__(self):
+ if not os.path.exists(self.INDEX_FOLDER):
+ os.makedirs(self.INDEX_FOLDER)
self._index = self._create_index()
def _mail_schema(self):
@@ -21,12 +26,11 @@ class SearchEngine(object):
tag=KEYWORD(stored=False, commas=True))
def _create_index(self):
- return RamStorage().create_index(self._mail_schema(), indexname='mails')
+ return whoosh.index.create_in(self.INDEX_FOLDER, self._mail_schema(), indexname='mails')
def index_mail(self, mail):
- writer = self._index.writer()
- self._index_mail(writer, mail)
- writer.commit()
+ with self._index.writer() as writer:
+ self._index_mail(writer, mail)
def _index_mail(self, writer, mail):
mdict = mail.as_dict()
@@ -43,16 +47,12 @@ class SearchEngine(object):
'body': unicode(mdict['body']),
'ident': unicode(mdict['ident'])
}
-
writer.update_document(**index_data)
def index_mails(self, mails):
- writer = self._index.writer()
- try:
+ with self._index.writer() as writer:
for mail in mails:
self._index_mail(writer, mail)
- finally:
- writer.commit()
def search(self, query):
query = query.replace('\"', '')