cnki:修改枚举类的使用,增加单一结果搜索的model

main
zhaoxiangpeng 4 weeks ago
parent be61990806
commit aa07aa05f1

@ -7,7 +7,11 @@ import json
from typing import Union, List, Dict
from datetime import datetime, timedelta
from science_article_cnki.models.enum_cls import ResourceType, SearchTypeId, SearchFieldEnum, OperatorEnum, LogicEnum, SearchFromId
from science_article_cnki.models.enum_cls import (
ResourceType, SourceDatabaseEnum,
SearchTypeId, SearchFieldEnum, OperatorEnum, LogicEnum,
SingleResultEnum
)
DB_CODE = {
'CFLS': '总库',
@ -53,7 +57,7 @@ def navigator_body(query: str = None, db_code: str = 'CFLS', **kwargs):
return _param
def signal_body(query: str = None, resource_type: str = 'JOURNAL', group_id: str = 'YE', **kwargs):
def signal_body(query: str = None, resource_type: str = '学术期刊', group_id: str = 'YE', **kwargs):
"""
获取左侧导航栏单类目的聚合
:group_id: 主要主题1; 学科2; 发表年度3; 研究层次4; 文献类型5; 文献来源6; 作者7; 机构8; 基金9
@ -65,8 +69,8 @@ def signal_body(query: str = None, resource_type: str = 'JOURNAL', group_id: str
_param = {
'queryJson': json.dumps({
"Platform": "",
"Resource": ResourceType[resource_type].name,
"Classid": ResourceType[resource_type].value,
"Resource": ResourceType[resource_type].value,
"Classid": SourceDatabaseEnum[resource_type].value,
"Products": "",
"QNode": {
"QGroup": [{
@ -101,14 +105,14 @@ def signal_body(query: str = None, resource_type: str = 'JOURNAL', group_id: str
return _param
def refine_search(query: str, resource_type: str = 'JOURNAL', year=None, subject=None, code=None, **kwargs):
def refine_search(query: str, resource_type: str = '学术期刊', year=None, subject=None, code=None, **kwargs):
"""
使用专业检索式检索后再次检索年份
"""
_query = {
"Platform": "",
"Resource": ResourceType[resource_type].name,
"Classid": ResourceType[resource_type].value,
"Resource": ResourceType[resource_type].value,
"Classid": SourceDatabaseEnum[resource_type].value,
"Products": "",
"QNode": {
"QGroup": [{
@ -400,6 +404,52 @@ def add_search_word(search_content: str, base_query: dict = None):
return words_query
def add_muti_group(
project: Union[SingleResultEnum, str],
value: str,
text_or_title: str,
base_query: dict = None,
**kwargs) -> dict:
"""
添加筛选项
Key <SingleResultEnum>: 筛选项标记
Items[].Title <>: 筛选项的名称 input/@title
Items[].Name <>: 筛选项的名称 input/@title
Items[].Key <>: 筛选项的代码 input/@value
Items[].Value <>: 筛选项的代码与Items.Key一致 input/@value
Items[].Value2 <>: 空字符串
Items[].Field <>: 筛选项标记同组的Key一致
"""
if isinstance(project, SingleResultEnum):
project = project.value
elif isinstance(project, str):
project = SingleResultEnum[project].value
child_item = {
"Key": project,
"Title": "",
"Logic": 0,
"Items": [
{
"Key": value,
"Title": text_or_title,
"Logic": 1,
"Field": project,
"Operator": "DEFAULT",
"Value": value,
"Value2": "",
"Name": project,
"ExtendType": 0
}],
"ChildItems": [
]
}
if base_query:
add_limit_2query_body(child_item, "MutiGroup", base_query)
return child_item
def limit_year_range(year: int, base_query: dict = None):
"""
添加年份筛选
@ -494,7 +544,7 @@ def temp_refine_search(
query: str,
year: int = None,
updated_date: str = None,
resource_type: str = 'JOURNAL',
resource_type: str = '学术期刊',
**kwargs
):
"""
@ -508,8 +558,8 @@ def temp_refine_search(
"""
_query = {
"Platform": "",
"Resource": ResourceType[resource_type].name,
"Classid": ResourceType[resource_type].value,
"Resource": ResourceType[resource_type].value,
"Classid": SourceDatabaseEnum[resource_type].value,
"Products": "",
"QNode": {
"QGroup": [
@ -567,7 +617,8 @@ def temp_query_search(query_body, query: str = None, page: int = 1, page_size: i
"dstyle": "listmode",
"boolSortSearch": "false",
"aside": aside,
"searchFrom": "资源范围:学术期刊; 仅看有全文,中英文扩展; 时间范围:更新时间:%(updated_date)s; 来源类别:全部期刊; " % {"updated_date": updated_date},
"searchFrom": "资源范围:学术期刊; 仅看有全文,中英文扩展; 时间范围:更新时间:%(updated_date)s; 来源类别:全部期刊; " % {
"updated_date": updated_date},
"subject": "",
"language": "",
"uniplatform": "",
@ -584,7 +635,8 @@ def temp_query_search(query_body, query: str = None, page: int = 1, page_size: i
'dstyle': 'listmode',
'boolSortSearch': "false",
'aside': '',
'searchFrom': '资源范围:学术期刊; 时间范围:更新时间:%(updated_date)s; 来源类别:全部期刊; ' % {"updated_date": updated_date},
'searchFrom': '资源范围:学术期刊; 时间范围:更新时间:%(updated_date)s; 来源类别:全部期刊; ' % {
"updated_date": updated_date},
"subject": "",
"language": "",
"uniplatform": ""
@ -595,6 +647,20 @@ def temp_query_search(query_body, query: str = None, page: int = 1, page_size: i
adv_query_search = temp_query_search
def single_result_nav(
queryJson: Union[dict, str],
groupId: Union[str, SingleResultEnum]
) -> Dict[str, str]:
if isinstance(queryJson, dict):
queryJson = json.dumps(queryJson, ensure_ascii=False)
if isinstance(groupId, SingleResultEnum):
groupId = groupId.value
return dict(
queryJson=queryJson,
groupId=groupId,
)
class SearchPaperArgModel:
pass

Loading…
Cancel
Save