|
@@ -8,6 +8,8 @@ from whoosh.index import create_in, open_dir, EmptyIndexError |
|
|
from whoosh.fields import TEXT, ID, Schema |
|
|
from whoosh.fields import TEXT, ID, Schema |
|
|
from whoosh.qparser import MultifieldParser, FieldsPlugin, WildcardPlugin |
|
|
from whoosh.qparser import MultifieldParser, FieldsPlugin, WildcardPlugin |
|
|
from whoosh.query import Prefix |
|
|
from whoosh.query import Prefix |
|
|
|
|
|
from whoosh.writing import AsyncWriter |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FullTextSearch: |
|
|
class FullTextSearch: |
|
|
""" Frappe Wrapper for Whoosh """ |
|
|
""" Frappe Wrapper for Whoosh """ |
|
@@ -75,7 +77,7 @@ class FullTextSearch: |
|
|
ix = self.get_index() |
|
|
ix = self.get_index() |
|
|
|
|
|
|
|
|
with ix.searcher(): |
|
|
with ix.searcher(): |
|
|
writer = ix.writer() |
|
|
|
|
|
|
|
|
writer = AsyncWriter(ix) |
|
|
writer.delete_by_term(self.id, document[self.id]) |
|
|
writer.delete_by_term(self.id, document[self.id]) |
|
|
writer.add_document(**document) |
|
|
writer.add_document(**document) |
|
|
writer.commit(optimize=True) |
|
|
writer.commit(optimize=True) |
|
@@ -135,4 +137,4 @@ class FullTextSearch: |
|
|
return out |
|
|
return out |
|
|
|
|
|
|
|
|
def get_index_path(index_name): |
|
|
def get_index_path(index_name): |
|
|
return frappe.get_site_path("indexes", index_name) |
|
|
|
|
|
|
|
|
return frappe.get_site_path("indexes", index_name) |