summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter/search/__init__.py
diff options
context:
space:
mode:
authorGiovane <giovaneliberato@gmail.com>2015-11-03 17:59:07 -0200
committerGiovane <giovaneliberato@gmail.com>2015-11-03 17:59:41 -0200
commit0f84c6354a116fd53628b23a56c1528c5dd3e8ef (patch)
treed20846b7b47dd613fffce87ce8a43b686d658819 /service/pixelated/adapter/search/__init__.py
parentaf7631369c96d3da54abb4e1cab44ea61151c481 (diff)
[#508] Making search also work with substrings - pairing w/ @pereiragislene
Diffstat (limited to 'service/pixelated/adapter/search/__init__.py')
-rw-r--r--service/pixelated/adapter/search/__init__.py10
1 files changed, 5 insertions, 5 deletions
diff --git a/service/pixelated/adapter/search/__init__.py b/service/pixelated/adapter/search/__init__.py
index 56ab2255..065dd5e5 100644
--- a/service/pixelated/adapter/search/__init__.py
+++ b/service/pixelated/adapter/search/__init__.py
@@ -23,7 +23,7 @@ import time
from pixelated.adapter.model.status import Status
from pixelated.adapter.search.contacts import contacts_suggestions
from whoosh.index import FileIndex
-from whoosh.fields import Schema, ID, KEYWORD, TEXT, NUMERIC
+from whoosh.fields import Schema, ID, KEYWORD, TEXT, NUMERIC, NGRAMWORDS
from whoosh.qparser import QueryParser
from whoosh.qparser import MultifieldParser
from whoosh.writing import AsyncWriter
@@ -103,9 +103,9 @@ class SearchEngine(object):
to=KEYWORD(stored=False, commas=True),
cc=KEYWORD(stored=False, commas=True),
bcc=KEYWORD(stored=False, commas=True),
- subject=TEXT(stored=False),
+ subject=NGRAMWORDS(stored=False),
date=NUMERIC(stored=False, sortable=True, bits=64, signed=False),
- body=TEXT(stored=False),
+ body=NGRAMWORDS(stored=False),
tag=KEYWORD(stored=True, commas=True),
flags=KEYWORD(stored=True, commas=True),
raw=TEXT(stored=False))
@@ -116,7 +116,7 @@ class SearchEngine(object):
def index_mail(self, mail):
with AsyncWriter(self._index) as writer:
- self._index_mail(writer, mail)
+ self._index_mail(writer, mail)
def _index_mail(self, writer, mail):
mdict = mail.as_dict()
@@ -197,7 +197,7 @@ class SearchEngine(object):
.replace('-in:', 'AND NOT tag:')
.replace('in:all', '*')
)
- return MultifieldParser(['raw', 'body'], self._index.schema).parse(query)
+ return MultifieldParser(['body', 'subject', 'raw'], self._index.schema).parse(query)
def remove_from_index(self, mail_id):
with AsyncWriter(self._index) as writer: