--- cdli/cdli_files.py 2007/03/23 17:15:36 1.75 +++ cdli/cdli_files.py 2007/04/23 13:07:10 1.76 @@ -26,6 +26,7 @@ import logging import transaction import copy import codecs +import sys def generateXMLReturn(hash): """erzeugt das xml file als returnwert fuer uploadATFRPC""" @@ -886,11 +887,12 @@ class CDLIBasket(Folder,CatalogAware): def searchInBasket(self,indexName,searchStr,regExp=False): """searchInBasket""" - lst=self.searchInLineIndexDocs(indexName,searchStr,uniq=True,regExp=False) + lst=self.searchInLineIndexDocs(indexName,searchStr,uniq=True,regExp=regExp) ret={} lv=self.getLastVersion() - logging.info("searching") + + for obj in lv.content.getContent(): id=obj[1].getId().split(".")[0] if id in lst: @@ -2083,10 +2085,14 @@ class CDLIRoot(Folder): words=self.findWordRegExp(indexName,searchTerm) # suche nach allen Treffern logging.info("wd:%s"%words) for word in words: + ret+=self.searchInLineIndexDocs(indexName,word) - - return unique(ret) - + + + x= unique(ret) + logging.info("words_done") + return x + def showInLineIndex(self): """get the index for debug purposes""" print "show" @@ -2209,7 +2215,7 @@ class CDLIRoot(Folder): """get lines with word fromFileId""" file=self.showFile(fileId) - + logging.info("regEXP %s"%regExp) ret=[] if regExp: # wenn regexp dann generiere alle worte aus der list die der regexp entsprechen wordlist=self.findWordRegExp(indexName,word) @@ -2219,7 +2225,8 @@ class CDLIRoot(Folder): for line in file.split("\n"): found=False for word in wordlist: - if line.find(word)>-1: + try: # just a hack because of possible unicode errors in line + if line.find(word)>-1: if lineList: #liste of moeglichen Zeilennummern num=line.split(".")[0] #Zeilenummer ist alles vor dem . in der Zeile @@ -2230,6 +2237,8 @@ class CDLIRoot(Folder): ret.append(line) break; + except: + pass return ret def tagWordInFile(self,fileId,word,lineList=None,regExp=True,indexName=""):