Пример #1
0
    def es_autocomplete(self, q, size=10):
        if not q:
            return

        es = self.connect()

        ts_start = time.time()

        q = any2unicode(q)
        query = {
            "_source": ["@id","name", "nameZh"],
            "query":{
                "wildcard":{"index_wildcard":u"*{}*".format(q) }
            }
        }

        # logging.info(json.dumps(query,ensure_ascii=False))
        ret = es.search(index=self.es_config["es_index"], body=query)
        # logging.info(json.dumps(ret,ensure_ascii=False, indent=4))

        # rewrite return value
        output = {
            "results": [x["_source"] for x in ret["hits"]["hits"][:size]]
        }
        output["servertime"] = (time.time() - ts_start)
        #logging.info(json.dumps(output,ensure_ascii=False, indent=4))

        return output
Пример #2
0
    def es_search(self, q, offset=0, size=10):
        if not q:
            return
        es = self.connect()

        ts_start = time.time()

        q = any2unicode(q)
        query = {
            "_source": ["@id", "name", "nameZh", "description", "descriptionZh"],
            "query":{
                 "query_string" : {
                    #"fields" : ["name", "nameZh", "description", "descriptionZh", "wikidataName"],
                    "fields" : ["index_search"],
                    "query" : q
                }
            },
            "from": offset,
            "size": size,
        }

        # logging.info(json.dumps(query,ensure_ascii=False))
        ret = es.search(index=self.es_config["es_index"], body=query)
        # logging.info(json.dumps(ret,ensure_ascii=False, indent=4))

        # rewrite return value
        output = {
            "results": [x["_source"] for x in ret["hits"]["hits"]]
        }
        output["servertime"] = (time.time() - ts_start)
        output["total"] = ret["hits"]["total"]
        output["offset"] = offset

        #logging.info(json.dumps(output,ensure_ascii=False, indent=4))
        return output
Пример #3
0
    def es_prefix(self, q, size=10):
        if not q:
            return

        es = self.connect()

        ts_start = time.time()

        q = any2unicode(q)
        query = {
            "concept-suggest": {
                "text": q,
                "completion": {
                    "field": "index_suggest"
                }
            }
        }

        # logging.info(json.dumps(query,ensure_ascii=False))
        ret = es.suggest(index=self.es_config["es_index"], body=query)
        logging.info(json.dumps(ret, ensure_ascii=False, indent=4))

        # rewrite return value
        output = {
            "results": [
                x["payload"]
                for x in ret["concept-suggest"][0]["options"][:size]
            ]
        }
        output["servertime"] = (time.time() - ts_start)
        #logging.info(json.dumps(output,ensure_ascii=False, indent=4))

        return output