Ошибка pg_catalog в sqlalchemy_searchable - PullRequest
0 голосов
/ 30 мая 2019

Хорошо, так что вы знаете, что полнотекстовый поиск нуждается в индексации данных, и 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...