quick-start-connectors

Форк
0
45 строк · 1.3 Кб
1
import logging
2

3
from .client import get_client
4

5
logger = logging.getLogger(__name__)
6

7

8
def process_content(node):
9
    if isinstance(node, list):
10
        values = [process_content(item) for item in node]
11
        return " ".join(values)
12
    elif isinstance(node, dict):
13
        if "content" in node:
14
            return process_content(node["content"])
15
        elif "value" in node:
16
            return node["value"]
17
    return str(node)
18

19

20
def serialize_results(results, mapping):
21
    data = []
22
    for result in results:
23
        item = {"content_type": result.content_type.id, "id": result.id}
24
        for key, value in result.fields().items():
25
            item[key] = str(value)
26
            if key == "content":
27
                item[key] = process_content(value)
28
            type_key = f"{result.content_type.id}.{key}"
29
            if type_key in mapping:
30
                item[mapping[type_key]] = item.pop(key)
31

32
        data.append(item)
33
    return data
34

35

36
def search(query):
37
    client = get_client()
38

39
    params = {"query": query, "limit": client.get_search_limit()}
40
    content_type = client.get_content_type()
41
    if content_type:
42
        params["content_type"] = content_type
43
    results = client.entries(params)
44

45
    return serialize_results(results.items, client.get_mapping())
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.