示例#1
0
 def create_searcher(self):
     if self.config.has_section("search"):
         self.options = dict(self.config.items("search"))
         self.engine_name = self.config.get("search", "engine")
     else:
         raise CubesError("Search engine not configured.")
     self.logger.debug("using search engine: %s" % self.engine_name)
     options = dict(self.options)
     del options["engine"]
     self.searcher = cubes_search.create_searcher(self.engine_name,
                                         browser=self.browser,
                                         locales=self.locales,
                                         **options)
示例#2
0
 def create_searcher(self):
     if self.config.has_section("search"):
         self.options = dict(self.config.items("search"))
         self.engine_name = self.config.get("search", "engine")
     else:
         raise CubesError("Search engine not configured.")
     self.logger.debug("using search engine: %s" % self.engine_name)
     options = dict(self.options)
     del options["engine"]
     self.searcher = cubes_search.create_searcher(self.engine_name,
                                                  browser=self.browser,
                                                  locales=self.locales,
                                                  **options)
示例#3
0
def cube_search(cube_name):
    # TODO: this is ported from old Werkzeug slicer, requires revision

    config = current_app.config
    if config.has_section("search"):
        options = dict(config.items("search"))
        engine_name = options.pop("engine")
    else:
        raise ConfigurationError("Search engine is not configured.")

    logger.debug("using search engine: %s" % engine_name)

    search_engine = cubes_search.create_searcher(engine_name,
                                                 browser=g.browser,
                                                 locales=g.locales,
                                                 **options)
    dimension = request.args.get("dimension")
    if not dimension:
        raise RequestError("No search dimension provided")

    query = request.args.get("query")

    if not query:
        raise RequestError("No search query provided")

    locale = g.locale or g.locales[0]

    logger.debug("searching for '%s' in %s, locale %s" %
                 (query, dimension, locale))

    search_result = search_engine.search(query, dimension, locale=locale)

    result = {
        "matches": search_result.dimension_matches(dimension),
        "dimension": dimension,
        "total_found": search_result.total_found,
        "locale": locale
    }

    if search_result.error:
        result["error"] = search_result.error

    if search_result.warning:
        result["warning"] = search_result.warning

    return jsonify(result)
示例#4
0
def cube_search(cube_name):
    # TODO: this is ported from old Werkzeug slicer, requires revision

    config = current_app.config
    if config.has_section("search"):
        options = dict(config.items("search"))
        engine_name = options.pop("engine")
    else:
        raise ConfigurationError("Search engine is not configured.")

    logger.debug("using search engine: %s" % engine_name)

    search_engine = cubes_search.create_searcher(engine_name,
                                                 browser=g.browser,
                                                 locales=g.locales,
                                                 **options)
    dimension = request.args.get("dimension")
    if not dimension:
        raise RequestError("No search dimension provided")

    query = request.args.get("query")

    if not query:
        raise RequestError("No search query provided")

    locale = g.locale or g.locales[0]

    logger.debug("searching for '%s' in %s, locale %s"
                 % (query, dimension, locale))

    search_result = search_engine.search(query, dimension, locale=locale)

    result = {
        "matches": search_result.dimension_matches(dimension),
        "dimension": dimension,
        "total_found": search_result.total_found,
        "locale": locale
    }

    if search_result.error:
        result["error"] = search_result.error

    if search_result.warning:
        result["warning"] = search_result.warning

    return jsonify(result)