2023-10-26 10:34:08 +08:00
|
|
|
# -*- coding: utf-8 -*-
|
2023-11-21 17:33:33 +08:00
|
|
|
# Copyright 2023 Ant Group CO., Ltd.
|
2023-10-26 10:34:08 +08:00
|
|
|
#
|
2023-11-21 17:33:33 +08:00
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
|
|
|
# in compliance with the License. You may obtain a copy of the License at
|
2023-10-26 10:34:08 +08:00
|
|
|
#
|
2023-11-21 17:33:33 +08:00
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
2023-10-26 10:34:08 +08:00
|
|
|
#
|
2023-11-21 17:33:33 +08:00
|
|
|
# Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
|
|
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
|
|
# or implied.
|
2023-10-26 10:34:08 +08:00
|
|
|
|
|
|
|
from typing import Dict
|
|
|
|
|
|
|
|
global_class = {}
|
|
|
|
|
|
|
|
|
|
|
|
class ClassLoader:
|
|
|
|
def __init__(self):
|
|
|
|
from pemja import findClass
|
|
|
|
|
|
|
|
searchEngineConnectionInfo = findClass(
|
2023-11-28 22:59:32 +08:00
|
|
|
"com.antgroup.openspg.server.common.model.datasource.connection.SearchEngineConnectionInfo"
|
2023-10-26 10:34:08 +08:00
|
|
|
)
|
|
|
|
global_class["SearchEngineConnectionInfo"] = searchEngineConnectionInfo
|
|
|
|
|
|
|
|
elasticSearchEngineClientDriver = findClass(
|
|
|
|
"com.antgroup.openspg.cloudext.impl.searchengine.elasticsearch.ElasticSearchEngineClientDriver"
|
|
|
|
)
|
|
|
|
global_class["SearchEngineConnectionInfo"] = searchEngineConnectionInfo
|
|
|
|
|
|
|
|
def loadClass(className: str):
|
|
|
|
return global_class[className]
|
|
|
|
|
|
|
|
|
|
|
|
def SearchEngineConnectionInfo(scheme: str, params: Dict[str, str]):
|
|
|
|
from pemja import findClass
|
|
|
|
|
|
|
|
searchEngineConnectionInfo = findClass(
|
2023-11-28 22:59:32 +08:00
|
|
|
"com.antgroup.openspg.server.common.model.datasource.connection.SearchEngineConnectionInfo"
|
2023-10-26 10:34:08 +08:00
|
|
|
)
|
|
|
|
search_connect_info = searchEngineConnectionInfo()
|
|
|
|
search_connect_info.setScheme(scheme)
|
|
|
|
search_connect_info.setParams(params)
|
|
|
|
return search_connect_info
|
|
|
|
|
|
|
|
|
|
|
|
def SearchEngineClient(search_connect_info):
|
|
|
|
from pemja import findClass
|
|
|
|
|
|
|
|
elasticSearchEngineClientDriver = findClass(
|
|
|
|
"com.antgroup.openspg.cloudext.impl.searchengine.elasticsearch.ElasticSearchEngineClientDriver"
|
|
|
|
)
|
|
|
|
driver = elasticSearchEngineClientDriver()
|
|
|
|
return driver.connect(search_connect_info)
|
|
|
|
|
|
|
|
|
|
|
|
def SearchRequest(query, idx_name, start, size):
|
|
|
|
from pemja import findClass
|
|
|
|
|
|
|
|
searchRequest = findClass(
|
|
|
|
"com.antgroup.openspg.cloudext.interfaces.searchengine.model.request.SearchRequest"
|
|
|
|
)
|
|
|
|
request = searchRequest()
|
|
|
|
request.setIndexName(idx_name)
|
|
|
|
request.setQuery(query)
|
|
|
|
request.setFrom(start)
|
|
|
|
request.setSize(size)
|
|
|
|
return request
|
|
|
|
|
|
|
|
|
|
|
|
def MatchQuery(name: str, value):
|
|
|
|
from pemja import findClass
|
|
|
|
|
|
|
|
matchQuery = findClass(
|
|
|
|
"com.antgroup.openspg.cloudext.interfaces.searchengine.model.request.query.MatchQuery"
|
|
|
|
)
|
|
|
|
return matchQuery(name, value)
|
|
|
|
|
|
|
|
|
|
|
|
def TermQuery(term: str, value):
|
|
|
|
from pemja import findClass
|
|
|
|
|
|
|
|
termQuery = findClass(
|
|
|
|
"com.antgroup.openspg.cloudext.interfaces.searchengine.model.request.query.TermQuery"
|
|
|
|
)
|
|
|
|
return termQuery(term, value)
|
|
|
|
|
|
|
|
|
|
|
|
def QueryGroup(queries: list, op):
|
|
|
|
from pemja import findClass
|
|
|
|
|
|
|
|
queryGroup = findClass(
|
|
|
|
"com.antgroup.openspg.cloudext.interfaces.searchengine.model.request.query.QueryGroup"
|
|
|
|
)
|
|
|
|
return queryGroup(queries, op)
|
|
|
|
|
|
|
|
|
|
|
|
def OperatorType():
|
|
|
|
from pemja import findClass
|
|
|
|
|
|
|
|
operatorType = findClass(
|
|
|
|
"com.antgroup.openspg.cloudext.interfaces.searchengine.model.request.query.OperatorType"
|
|
|
|
)
|
|
|
|
return operatorType
|