From 29d904caa742b2e8a4e4fa24fff6f1dcff321f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20=C3=96zkural?= Date: Mon, 12 Dec 2005 22:29:13 +0000 Subject: [PATCH] * add an API to search by string --- pisi/api.py | 10 ++++++++++ pisi/cli/commands.py | 2 +- pisi/search/__init__.py | 6 +++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pisi/api.py b/pisi/api.py index b4dcc5fc..d9731d7c 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -243,6 +243,16 @@ def info_name(package_name): else: raise Error(_('Package %s not found') % package_name) +def search_package_terms(terms, lang = None): + if not lang: + lang = pisi.pxml.autoxml.LocalText.get_lang() + def search(self, id, terms): + return pisi.search.query(id, lang, terms) + r1 = pisi.search.query_terms('summary', lang, terms) + r2 = pisi.search.query_terms('description', lang, terms) + r = r1.union(r2) + return r + def search_package(terms, lang = None): if not lang: lang = pisi.pxml.autoxml.LocalText.get_lang() diff --git a/pisi/cli/commands.py b/pisi/cli/commands.py index cea9e535..6e487b2d 100644 --- a/pisi/cli/commands.py +++ b/pisi/cli/commands.py @@ -1007,7 +1007,7 @@ Finds a package in repository containing specified search terms self.help() return - r = pisi.api.search_package(self.args, self.get_lang()) + r = pisi.api.search_package_terms(self.args, self.get_lang()) for pkg in r: self.printinfo_package(pkg) diff --git a/pisi/search/__init__.py b/pisi/search/__init__.py index 472db3e4..3023b00f 100644 --- a/pisi/search/__init__.py +++ b/pisi/search/__init__.py @@ -54,7 +54,11 @@ def add_doc(id, lang, docid, str, txn = None): def remove_doc(id, lang, docid, str, txn = None): ctx.invidx[id][lang].remove_doc(docid, txn) -def query(id, lang, terms, txn = None): +def query_terms(id, lang, terms, txn = None): import preprocess as p terms = map(lambda x: p.lower(lang, x), terms) return ctx.invidx[id][lang].query(terms, txn) + +def query(id, lang, str, txn = None): + terms = preprocess(lang, str) + return query(id, lang, terms, txn)