diff -r 20c41a7e2173 -r 1a061f244254 web/ldt/text/utils.py --- a/web/ldt/text/utils.py Fri Nov 19 18:14:02 2010 +0100 +++ b/web/ldt/text/utils.py Tue Nov 23 17:54:36 2010 +0100 @@ -6,6 +6,9 @@ import datetime import lxml.etree import base64 +import lucene +from ldt.ldt_utils import STORE +from ldt.ldt_utils import ANALYZER __BOOLEAN_DICT = { 'false':False, @@ -62,3 +65,24 @@ return doc + +class LdtSearch(object): + + def query(self, field, query): + indexSearcher = lucene.IndexSearcher(STORE) + queryParser = lucene.QueryParser(lucene.Version.LUCENE_30, field, lucene.FrenchAnalyzer(lucene.Version.LUCENE_30)) + queryParser.setDefaultOperator(lucene.QueryParser.Operator.AND) + queryObj = queryParser.parse(query) + hits = indexSearcher.search(queryObj, settings.LDT_MAX_SEARCH_NUMBER) + + res = [] + for hit in hits.scoreDocs: + doc = indexSearcher.doc(hit.doc) + res.append({"external_id":doc.get("external_id"),"title":doc.get("title")}) + indexSearcher.close() + return res + + def queryAll(self, query): + return self.query("all", query) + +