Хорошо, так что вы знаете, что полнотекстовый поиск нуждается в индексации данных, и postgres использует тип tsvector для хранения этих индексов. Теперь для индексации данных нам нужно удалить стоп-слова (то есть в качестве ...), эти стоп-слова хранятся в postgres как таблица pg_catalog.english. и это отсутствует в пост-11 и, согласно документам, должно быть там. Так что я получаю pg_catalog.english не найден.
Я попытался настроить python db.config_mappers()
, а затем запустил миграцию
Я все еще получаю ту же ошибку
некоторые люди говорили, что я должен попробовать
CREATE TEXT SEARCH DICTIONARY pg_catalog.english (
Template = snowball
, Language = english
);
Я сделал это, и это сработало, но колба не нашла
когда я запускаю sql SELECT to_tsvector('english','in the list of stop words');
, он работает и возвращает вектор с индексированными словами и пропускает стоп-слова из pg_catalog english
но когда я запускаю sql show default_text_search_config
в postiko как команда sql, я получаю pg_catalog.english
make_searchable(db.metadata)
db.configure_mappers()
class ArticleQuery(BaseQuery, SearchQueryMixin):
pass
class Asset(AuditableBaseModel):
"""
Model for assets
"""
query_class = ArticleQuery
tag = db.Column(db.String(60), nullable=False, unique=True)
custom_attributes = db.Column(JSON, nullable=True)
asset_category_id = db.Column(
db.String, db.ForeignKey('asset_categories.id'), nullable=False)
center_id = db.Column(db.String, db.ForeignKey('centers.id'))
assignee_type = db.Column(
db.Enum(AssigneeType),
nullable=False,
server_default='space',
name='assignee_type')
assignee_id = db.Column(db.String(60))
assigned_by = db.Column(db.String(60), nullable=True)
date_assigned = db.Column(db.DateTime, nullable=True)
status = db.Column(db.String(60), nullable=False, server_default='ok')
search_vector = db.Column(TSVectorType)
Здесь я делаю запрос
def get(self):
"""
Search Asset by date and warranty
"""
# import pdb; pdb.set_trace()
qry_dict = request.args.to_dict()
search_key = qry_dict['key']
from sqlalchemy_searchable import search
query1 = Asset.query_()
res = search(Asset.query,'AND/345/EWRD')
print(res.first())
# res = Asset.query.search('kdokd')
# print('kkkkkkkkkkkkk',res)
asset_schema = AssetSchema(many=True, exclude=EXCLUDED_FIELDS)