# HG changeset patch # User verrierj # Date 1317224005 -7200 # Node ID 89334901b7c20f968fd92f39cde04ade5f8d2712 # Parent b7add86c2772473ca393a0f7b57d800547a11fd5 Improve search page diff -r b7add86c2772 -r 89334901b7c2 src/ldt/ldt/indexation/__init__.py --- a/src/ldt/ldt/indexation/__init__.py Mon Sep 26 11:05:51 2011 +0200 +++ b/src/ldt/ldt/indexation/__init__.py Wed Sep 28 17:33:25 2011 +0200 @@ -10,28 +10,26 @@ ANALYZER.addAnalyzer("abstract", lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)) ANALYZER.addAnalyzer("all", lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT)) - def get_results_with_context(field, query): res = get_results_list(field, query) - analyzer = lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT) searcher = get_searcher() - formatter = lucene.SimpleHTMLFormatter('', '') query = get_query_parser(field).parse(query) - highlighter = lucene.Highlighter(formatter, lucene.QueryScorer (query)) - contexts = [] - + 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")} - segment_title = doc.getField('title').stringValue() - - text = doc.getField(field).stringValue() - ts = analyzer.tokenStream("body", lucene.StringReader(text)) - context = highlighter.getBestFragments(ts, text, settings.LDT_MAX_FRAGMENT_PER_SEARCH, "...") - - ids['context'] = context - ids['segment_title'] = segment_title - contexts.append(ids) + score = i.score + title = doc.getField('title').stringValue() + desc = doc.getField('abstract').stringValue() + tags = doc.getField('tags').stringValue() + + ids['context'] = desc + ids['title'] = title + ids['tags'] = tags + ids['score'] = score + ids['lucene_id'] = i.doc + contexts.append(ids) searcher.close() return contexts @@ -44,6 +42,35 @@ return hits.scoreDocs +def highlight_documents(doc_list, query, field): + analyzer = lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT) + searcher = get_searcher() + formatter = lucene.SimpleHTMLFormatter('', '') + query = get_query_parser(field).parse(query) + highlighter = lucene.Highlighter(formatter, lucene.QueryScorer (query)) + + for project in doc_list: + for segment in project['list']: + lucene_doc = searcher.doc(segment['lucene_id']) + segment['context'] = get_highlighted_text(lucene_doc, analyzer, highlighter, 'abstract') + segment['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 segment['tags'] == u'': + segment['tags'] = lucene_doc.getField('tags').stringValue() + if segment['title'] == u'': + segment['title'] = lucene_doc.getField('title').stringValue() + + return doc_list + +def get_highlighted_text(doc, analyzer, highlighter, field): + res = doc.getField(field).stringValue() + ts = analyzer.tokenStream("body", lucene.StringReader(res)) + res = highlighter.getBestFragments(ts, res, settings.LDT_MAX_FRAGMENT_PER_SEARCH, "...") + return res + def get_writer(new=False): lucene.getVMEnv().attachCurrentThread() return lucene.IndexWriter(STORE, ANALYZER, new, lucene.IndexWriter.MaxFieldLength.UNLIMITED) diff -r b7add86c2772 -r 89334901b7c2 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Mon Sep 26 11:05:51 2011 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Wed Sep 28 17:33:25 2011 +0200 @@ -52,17 +52,7 @@ }); - - + {% endblock %} {% block body %} diff -r b7add86c2772 -r 89334901b7c2 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_results.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_results.html Mon Sep 26 11:05:51 2011 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_results.html Wed Sep 28 17:33:25 2011 +0200 @@ -9,6 +9,31 @@ {% block css_import %} {{ block.super }} + {% endblock %} {% block js_declaration %} @@ -30,23 +55,33 @@ {{ msg }} {% else %} - {% trans "Results for " %} {{ search }} : + {% ifequal nb_results 0 %} + {% blocktrans %} No results for {{ search }}.{% endblocktrans %} + {% else %} + + {% trans "Results for " %} {{ search }} ({{ nb_results }} {% trans "Result" %}{{ nb_results|pluralize }}) : +

+ {% autoescape off %}