Browse Source

Merge pull request #14215 from ChillarAnand/whoosh

fix: Use whoosh AsyncWriter to prevent write locks
version-14
gavin 3 years ago
committed by GitHub
parent
commit
06c1d79bb0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 2 deletions
  1. +4
    -2
      frappe/search/full_text_search.py

+ 4
- 2
frappe/search/full_text_search.py View File

@@ -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)

Loading…
Cancel
Save