diff --git a/pisi/api.py b/pisi/api.py index 512c2496..0000445e 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -107,7 +107,7 @@ def init(database = True, write = True, ctx.componentdb = pisi.component.ComponentDB() ctx.packagedb = packagedb.init_db() ctx.sourcedb = pisi.sourcedb.init() - pisi.search.init(['summary', 'description'], ['en', 'tr']) + pisi.search.init(['terms'], ['en', 'tr']) else: ctx.repodb = None ctx.installdb = None @@ -333,9 +333,7 @@ def search_package_names(query): def search_package_terms(terms, lang = None, search_names = True, repo = pisi.itembyrepodb.all): if not lang: lang = pisi.pxml.autoxml.LocalText.get_lang() - r1 = pisi.search.query_terms('summary', lang, terms, repo = repo) - r2 = pisi.search.query_terms('description', lang, terms, repo = repo) - r = r1.union(r2) + r = pisi.search.query_terms('terms', lang, terms, repo = repo) if search_names: for term in terms: r |= search_package_names(term) @@ -344,9 +342,7 @@ def search_package_terms(terms, lang = None, search_names = True, repo = pisi.it def search_package(query, lang = None, search_names = True, repo = pisi.itembyrepodb.all): if not lang: lang = pisi.pxml.autoxml.LocalText.get_lang() - r1 = pisi.search.query('summary', lang, query, repo = repo) - r2 = pisi.search.query('description', lang, query, repo = repo) - r = r1.union(r2) + r = pisi.search.query('terms', lang, query, repo = repo) if search_names: r |= search_package_names(query) return r diff --git a/pisi/packagedb.py b/pisi/packagedb.py index 209919ea..736f6d5b 100644 --- a/pisi/packagedb.py +++ b/pisi/packagedb.py @@ -104,13 +104,20 @@ class PackageDB(object): # add component ctx.componentdb.add_package(package_info.partOf, package_info.name, repo, txn) # index summary and description + search_keys = {} for (lang, doc) in package_info.summary.iteritems(): - if lang in ['en', 'tr']: - pisi.search.add_doc('summary', lang, package_info.name, doc, repo=repo, txn=txn) + text = search_keys.get(lang, "") + text += " %s" % doc + search_keys[lang] = text for (lang, doc) in package_info.description.iteritems(): - if lang in ['en', 'tr']: - pisi.search.add_doc('description', lang, package_info.name, doc, repo=repo, txn=txn) - + text = search_keys.get(lang, "") + text += " %s" % doc + search_keys[lang] = text + for lang in search_keys: + text = search_keys[lang] + # FIXME: other languages should be searchable too + if lang in ('en', 'tr'): + pisi.search.add_doc('terms', lang, package_info.name, doc, repo=repo, txn=txn) ctx.txn_proc(proc, txn) def clear(self, txn = None): @@ -138,12 +145,20 @@ class PackageDB(object): self.dr.remove_item(dep_name, repo, txn=txn) ctx.componentdb.remove_package(package_info.partOf, package_info.name, repo, txn) + search_keys = {} for (lang, doc) in package_info.summary.iteritems(): - if lang in ['en', 'tr']: - pisi.search.remove_doc('summary', lang, package_info.name, doc, repo=repo, txn=txn) + text = search_keys.get(lang, "") + text += " %s" % doc + search_keys[lang] = text for (lang, doc) in package_info.description.iteritems(): - if lang in ['en', 'tr']: - pisi.search.remove_doc('description', lang, package_info.name, doc, repo=repo, txn=txn) + text = search_keys.get(lang, "") + text += " %s" % doc + search_keys[lang] = text + for lang in search_keys: + text = search_keys[lang] + # FIXME: other languages should be searchable too + if lang in ('en', 'tr'): + pisi.search.remove_doc('terms', lang, package_info.name, doc, repo=repo, txn=txn) self.d.txn_proc(proc, txn) def remove_repo(self, repo, txn = None):