release indexer
authorymh <ymh.work@gmail.com>
Tue, 06 Mar 2012 18:37:21 +0100
changeset 594 bc018d2744f2
parent 593 c8175745fcac
child 595 0a7f0bf5f967
release indexer
src/ldt/ldt/indexation/__init__.py
web/ldtplatform/config.py.tmpl
--- a/src/ldt/ldt/indexation/__init__.py	Tue Mar 06 00:11:43 2012 +0100
+++ b/src/ldt/ldt/indexation/__init__.py	Tue Mar 06 18:37:21 2012 +0100
@@ -13,64 +13,72 @@
 def get_results_with_context(field, query):
     
     searcher = get_searcher()
-    res = get_results_list(field, query, searcher)
-    query = get_query_parser(field).parse(query)
-    contexts = [] 
-        
-    for i in res:
-        doc = searcher.doc(i.doc)  
-        ids = {"iri_id":doc.get("iri_id"), "ensemble_id":doc.get("ensemble_id"), "decoupage_id":doc.get("decoupage_id"), "element_id":doc.get("element_id"), "project_id":doc.get("project_id")}     
-        score = i.score
-        title = doc.getField('title').stringValue()
-        desc = doc.getField('abstract').stringValue()
-        tags = doc.getField('tags').stringValue()
-        begin = doc.getField('begin').stringValue()
-        duration = doc.getField('duration').stringValue()
-
-        ids['context'] = desc
-        ids['title'] = title
-        ids['tags'] = tags
-        ids['score'] = score
-        ids['lucene_id'] = i.doc
-        ids['begin'] = begin
-        ids['duration'] = duration
-        contexts.append(ids)     
     
-    searcher.close()
+    try:
+        res = get_results_list(field, query, searcher)
+        query = get_query_parser(field).parse(query)
+        contexts = [] 
+            
+        for i in res:
+            doc = searcher.doc(i.doc)  
+            ids = {"iri_id":doc.get("iri_id"), "ensemble_id":doc.get("ensemble_id"), "decoupage_id":doc.get("decoupage_id"), "element_id":doc.get("element_id"), "project_id":doc.get("project_id")}     
+            score = i.score
+            title = doc.getField('title').stringValue()
+            desc = doc.getField('abstract').stringValue()
+            tags = doc.getField('tags').stringValue()
+            begin = doc.getField('begin').stringValue()
+            duration = doc.getField('duration').stringValue()
+    
+            ids['context'] = desc
+            ids['title'] = title
+            ids['tags'] = tags
+            ids['score'] = score
+            ids['lucene_id'] = i.doc
+            ids['begin'] = begin
+            ids['duration'] = duration
+            contexts.append(ids)     
+    finally:
+        searcher.close()
     return contexts
 
 def get_results_list(field, query, indexSearcher=None):
+    searcher_allocated = False    
     if indexSearcher is None:
-        indexSearcher = get_searcher()
-    queryParser = get_query_parser(field)
-    queryObj = queryParser.parse(query)
-    hits = indexSearcher.search(queryObj, settings.LDT_MAX_SEARCH_NUMBER)
-    
+        indexSearcher, searcher_allocated = get_searcher(), True
+    try:
+        queryParser = get_query_parser(field)
+        queryObj = queryParser.parse(query)
+        hits = indexSearcher.search(queryObj, settings.LDT_MAX_SEARCH_NUMBER)
+    finally:
+        if searcher_allocated:
+            indexSearcher.close()
     return hits.scoreDocs
 
 def highlight_documents(results_list, query, field):
     searcher = get_searcher()
-    analyzer = lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)
-    formatter = lucene.SimpleHTMLFormatter('<span class="highlight">', '</span>')
-    query = get_query_parser(field).parse(query)
-    highlighter = lucene.Highlighter(formatter, lucene.QueryScorer (query))
-    
-    for project in results_list:
-        for segment in project['list']:
-            lucene_doc = searcher.doc(segment.lucene_id)
-            segment.context = get_highlighted_text(lucene_doc, analyzer, highlighter, 'abstract')
-            tags = get_highlighted_text(lucene_doc, analyzer, highlighter, 'tags')
-            segment.title = get_highlighted_text(lucene_doc, analyzer, highlighter, 'title')
-            
-            if segment.context == u'':
-                segment.context = lucene_doc.getField('abstract').stringValue()
-            if tags == u'':
-                tags = lucene_doc.getField('tags').stringValue()
-            if segment.title == u'':
-                segment.title = lucene_doc.getField('title').stringValue() 
+    try:
+        analyzer = lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)
+        formatter = lucene.SimpleHTMLFormatter('<span class="highlight">', '</span>')
+        query = get_query_parser(field).parse(query)
+        highlighter = lucene.Highlighter(formatter, lucene.QueryScorer (query))
+        
+        for project in results_list:
+            for segment in project['list']:
+                lucene_doc = searcher.doc(segment.lucene_id)
+                segment.context = get_highlighted_text(lucene_doc, analyzer, highlighter, 'abstract')
+                tags = get_highlighted_text(lucene_doc, analyzer, highlighter, 'tags')
+                segment.title = get_highlighted_text(lucene_doc, analyzer, highlighter, 'title')
                 
-            segment.context_tags = tags[tags.find(';')+1:]          
-            
+                if segment.context == u'':
+                    segment.context = lucene_doc.getField('abstract').stringValue()
+                if tags == u'':
+                    tags = lucene_doc.getField('tags').stringValue()
+                if segment.title == u'':
+                    segment.title = lucene_doc.getField('title').stringValue() 
+                    
+                segment.context_tags = tags[tags.find(';')+1:]          
+    finally:
+        searcher.close()
     return results_list    
 
 def get_highlighted_text(doc, analyzer, highlighter, field):
--- a/web/ldtplatform/config.py.tmpl	Tue Mar 06 00:11:43 2012 +0100
+++ b/web/ldtplatform/config.py.tmpl	Tue Mar 06 18:37:21 2012 +0100
@@ -72,7 +72,7 @@
 
 MANAGERS = ADMINS
 
-GOOGLE_ANALYTICS_CODE = 'UA-1234-1'
+#GOOGLE_ANALYTICS_CODE = 'UA-1234-1'
 
 EMAIL_USE_TLS = True
 EMAIL_HOST = 'smtp.gmail.com'