diff --git a/rhodecode/controllers/search.py b/rhodecode/controllers/search.py --- a/rhodecode/controllers/search.py +++ b/rhodecode/controllers/search.py @@ -22,11 +22,11 @@ Created on Aug 7, 2010 search controller for pylons @author: marcink """ -from pylons import request, response, session, tmpl_context as c, url +from pylons import request, response, config, session, tmpl_context as c, url from pylons.controllers.util import abort, redirect from rhodecode.lib.auth import LoginRequired from rhodecode.lib.base import BaseController, render -from rhodecode.lib.indexers import IDX_LOCATION, SCHEMA, IDX_NAME, ResultWrapper +from rhodecode.lib.indexers import SCHEMA, IDX_NAME, ResultWrapper from webhelpers.paginate import Page from webhelpers.util import update_params from pylons.i18n.translation import _ @@ -42,7 +42,7 @@ class SearchController(BaseController): @LoginRequired() def __before__(self): - super(SearchController, self).__before__() + super(SearchController, self).__before__() def index(self, search_repo=None): c.repo_name = search_repo @@ -56,15 +56,16 @@ class SearchController(BaseController): 'repository':'repository'}\ .get(c.cur_type, 'content') - + if c.cur_query: cur_query = c.cur_query.lower() - + if c.cur_query: p = int(request.params.get('page', 1)) highlight_items = set() try: - idx = open_dir(IDX_LOCATION, indexname=IDX_NAME) + idx = open_dir(config['app_conf']['index_dir'] + , indexname=IDX_NAME) searcher = idx.searcher() qp = QueryParser(search_type, schema=SCHEMA) @@ -72,7 +73,7 @@ class SearchController(BaseController): cur_query = u'repository:%s %s' % (c.repo_name, cur_query) try: query = qp.parse(unicode(cur_query)) - + if isinstance(query, Phrase): highlight_items.update(query.words) else: @@ -81,14 +82,14 @@ class SearchController(BaseController): highlight_items.add(i[1]) matcher = query.matcher(searcher) - + log.debug(query) log.debug(highlight_items) results = searcher.search(query) res_ln = len(results) c.runtime = '%s results (%.3f seconds)' \ % (res_ln, results.runtime) - + def url_generator(**kw): return update_params("?q=%s&type=%s" \ % (c.cur_query, c.cur_search), **kw) @@ -98,8 +99,8 @@ class SearchController(BaseController): highlight_items), page=p, item_count=res_ln, items_per_page=10, url=url_generator) - - + + except QueryParserError: c.runtime = _('Invalid search query. Try quoting it.') searcher.close() @@ -107,6 +108,6 @@ class SearchController(BaseController): log.error(traceback.format_exc()) log.error('Empty Index data') c.runtime = _('There is no index to search in. Please run whoosh indexer') - + # Return a rendered template return render('/search/search.html')