Lần đầu tiên trên trang web, vì vậy xin chào tất cả và cảm ơn trước. Lurker lâu năm và newb.Flask-Sqlalchemy + Sqlalchemy-tìm kiếm trở lại danh sách trống
Tôi đang làm việc trên một ứng dụng web trong bình, sử dụng Flask-SqlAlchemy và SqlAlchemy-Searchable (docs->https://sqlalchemy-searchable.readthedocs.org/en/latest/index.html). Đối với một lý do tôi không thể tìm ra, khi tôi thử một ví dụ tương tự vào mã hiển thị trên trang tài liệu:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy, BaseQuery
from sqlalchemy_searchable import SearchQueryMixin
from sqlalchemy_utils.types import TSVectorType
from sqlalchemy_searchable import make_searchable
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://usr:[email protected]/dev'
app.config['SECRET_KEY'] = 'notreallyasecret'
db = SQLAlchemy(app)
make_searchable()
class ArticleQuery(BaseQuery, SearchQueryMixin):
pass
class Article(db.Model):
query_class = ArticleQuery
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(255))
content = db.Column(db.UnicodeText)
search_vector = db.Column(TSVectorType('name', 'content'))
truy vấn tìm kiếm của tôi không hoạt động đúng. Tôi đã mở một vỏ trăn và tạo ra db, và chèn năm bài báo giống hệt nhau
a= Article(name='finland',content='finland')
db.session.add(a)
db.session.commit() #a-e
với 'finland' cả như tên và nội dung. Theo ví dụ:
Article.query.search(u'finland').limit(5).all()
Sẽ có các bài viết được trả lại có giá trị một nơi nào đó trong đó. Trong trường hợp của tôi, tôi nhận được một danh sách trống. Tôi nhận lại một đối tượng nếu tôi sửa đổi truy vấn mẫu thành:
Article.query.search(' ').first()
Nhưng tìm kiếm không gian trống là vô dụng. Bất kỳ ý tưởng?
Thêm một chút vào nó: Tôi nhận thấy trong bảng bài viết, cột 'search_vector tsvector' hoàn toàn trống mặc dù dữ liệu nằm trong cột nội dung và tên; Tôi không chắc liệu nó có liên quan gì đến nó không.
Tôi ghét phải hỏi một câu hỏi rõ ràng ... nhưng bạn có chắc đó là một "finland" trong dữ liệu của bạn? Tôi tin rằng tìm kiếm sqlalchemy là trường hợp nhạy cảm ... có lẽ dữ liệu của bạn có một "Phần Lan" nhưng không có "finland"? – dylrei
Câu hỏi hoàn toàn hợp lệ. Vâng, tôi chắc chắn họ giống nhau. Tôi đã thực sự tạo ra nhiều bản ghi hơn, với tên và nội dung cả hai đều là "chiếc bánh". Tôi chỉnh sửa bản gốc để làm cho finland trong tất cả các trường hợp thấp hơn. – Vyndion
Có vẻ như bạn không nên lấy lại bất cứ thứ gì để tìm kiếm không gian. Bạn lấy lại 5 bản ghi "finland" mà bạn đã nhập nếu bạn làm 'Article.query.search ('') .all()'? – dylrei