数据库表多个字段的SQL搜索和排名引擎
项目描述
SQL_mutlisearch
轻松搜索引擎到 SQL 表中,并提供结果搜索和排序。
跑步
以下数据库上可用的软件包:
- sqlite
安装
pip install SQL_multisearch
使用简单的 JSON 主体初始化 SQL_multisearch 类:
from SQL_multisearch import SQL_multisearch
body = {
"connexion_infos":{...},
"request": {...},
"searchable_fields": {...}
}
SQLm = SQL_mutlisearch(body["connexion_infos"], body["request"], body["searchable_fields"])
可用的 SQL_mutisearch 方法
SQL_multisearch 类可以使用以下方法:
_count()
:返回一个带有结果数的整数_stats()
:返回具有以下模式的字典: {'ranks': {'rank_value': count}, 'total': total}_results()
: 返回具有以下架构的结果列表:[{'ranking': rank, 'values':{'field_name':'value', ...}}]_columns()
:返回表字段的列表
数据库连接详细信息
body["connexion_infos"] 值是一个包含多个值的字典:
{"connexion_infos":{
"db_system": "sqlite",
"db_url": "path to the database or url",
"db_database": "name of the database",
"db_table": "table name",
"db_schema": "schema name"
}}
授权请求操作
body["request"] 字典可以进行多种操作。它定义了返回结果的结构和特征:
{"request":{
"value": "string or integer to search",
"value_type": "str|int",
"operande": "like|left_like|right_like|ilike|left_ilike|right_ilike|=|>|>=|<|<=",
"limit": "get an integer",
"offset": "get an integer",
"order": "asc|desc, default=desc",
"schema":["list of field names to return in the result"]
}}
排名和可搜索字段
SQL_multiserach 对每个结果进行排名。对数据库表的研究可能涉及多个领域。为了给每个字段赋予不同的等级,可以在正文中指示优先级。body["searchable_fields"] 允许在具有不同优先级的多个字段中进行搜索。
["searchable_fields": [
{
"field": "field name",
"priority": "get an integer"
},
]
]
示例
from SQL_multisearch import *
body = {
"connexion_infos": {
"db_system": db_type,
"db_url": db_url,
"db_database": db_db,
"db_table": db_table,
"db_schema": db_schema
},
"request":{
"value": "halles",
"value_type": "str",
"operande": "ilike",
"limit":10,
"offset":30,
"order": "asc",
"schema":["N_inventaire", "Rue", "Nom_site"]
},
"searchable_fields": [
{
"field": "Rue",
"priority": 2
},
{
"field": "Nom_site",
"priority":1
}
]
}
SQLm = SQL_multisearch(body["connexion_infos"], body["request"], body["searchable_fields"])
print(SQLm._count())
print(SQLm._results())
print(SQLm._columns())
print(SQLm._stats())
>>2
>>[{'values': {'N_inventaire': 3898, 'Rue': 'PIERRE LESCOT, RUE', 'Nom_site': 'HALLES_BALTARD'}, 'ranking': 1.4285714285714286}, {'values': {'N_inventaire': 3899, 'Rue': 'PIERRE LESCOT, RUE', 'Nom_site': 'HALLES_BALTARD'}, 'ranking': 1.4285714285714286}, {'values': {'N_inventaire': 3900, 'Rue': 'PIERRE LESCOT, RUE', 'Nom_site': 'HALLES_BALTARD'}, 'ranking': 1.4285714285714286}, {'values': {'N_inventaire': 3901, 'Rue': 'PIERRE LESCOT, RUE', 'Nom_site': 'HALLES_BALTARD'}, 'ranking': 1.4285714285714286}, {'values': {'N_inventaire': 3902, 'Rue': 'PIERRE LESCOT, RUE', 'Nom_site': 'HALLES_BALTARD'}, 'ranking': 1.4285714285714286}, {'values': {'N_inventaire': 3903, 'Rue': 'PIERRE LESCOT, RUE', 'Nom_site': 'HALLES_BALTARD'}, 'ranking': 1.4285714285714286}, {'values': {'N_inventaire': 3905, 'Rue': 'PIERRE LESCOT, RUE', 'Nom_site': 'HALLES_BALTARD'}, 'ranking': 1.4285714285714286}, {'values': {'N_inventaire': 131, 'Rue': 'BERGER, RUE', 'Nom_site': 'LES_HALLES'}, 'ranking': 1.6}, {'values': {'N_inventaire': 132, 'Rue': 'BERGER, RUE', 'Nom_site': 'LES_HALLES'}, 'ranking': 1.6}, {'values': {'N_inventaire': 133, 'Rue': 'BERGER, RUE', 'Nom_site': 'LES_HALLES'}, 'ranking': 1.6}]
>>['N_inventaire', 'Rue', 'N_rue', 'Nom_site', 'Arrondissement', 'Ville', 'Latitude_x', 'Longitude_y', 'Support', 'Couleur', 'Taille', 'Date_prise_vue', 'Photographe', 'Date_construction', 'Architecte', 'Classement_MH', 'Generalite_architecture', 'Mot_cle1', 'Mot_cle2', 'Mot_cle3', 'Mot_cle4', 'Mot_cle5', 'Mot_cle6', 'Cote_base', 'Cote_classement', 'Date_inventaire', 'Auteur']
>>{'ranks': {'1.4285714285714286': 7, '1.6': 3}, 'total': 10}
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
内置分布
SQL_multisearch-1.0.4-py3-none-any.whl
(5.1 kB
视图哈希)
关
SQL_multisearch -1.0.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 163d6842a558336b368d7e171ce94d433028e8af92787407289f2f38037342b4 |
|
MD5 | 46809218bc14af01fcd427d5eb4a90f7 |
|
布莱克2-256 | 36e84dd38fe0135950a35b710de80017d9d380c7c026486e7be63ecf1c23375b |