python - flask中sqlalchemy如何模糊查询
巴扎黑
巴扎黑 2017-04-17 14:57:46
0
4
935

因为现在做一个查询功能,输入一个字符串,去查询匹配的内容,这个字符串可能存在于多个字段。

现在参考用了Flask-WhooshAlchemy来做,但是查询结果如下:

 hosts.query.whoosh_search('ce').all()            
[]
 hosts.query.whoosh_search('ceshi').all()
[<Host u'\u6d4b\u8bd5'>]
 hosts.query.whoosh_search('ces').all()  
[]
 hosts.query.whoosh_search('esh').all()
[]

查询"ceshi"的时候又结果,而查询"ce"的时候竟然查询不出来,这也太2了吧。。。求大神推荐个解决办法

巴扎黑
巴扎黑

全員に返信(4)
洪涛

Flask-WhooshAlchemy を使ったことはありませんが、表現から判断すると @digwtx さんがおっしゃるようにあいまい一致の書き方が間違っているか、長さが制限されているのかもしれません。

MySQL を使用している場合、MySQL では一致する文字の最小長が 4 文字に制限されています。一致する結果の詳細が表示されるのは、それが 4 文字を超えている場合のみです。

フラスコでの SQLAlchemy の基本的なクエリの詳細

いいねを押す +0
伊谢尔伦

whoosh_index このメソッドは、データベースと全文検索エンジンの間の同期を維持するために、データベース内の既存のデータをすべて削除して、再度開始します。

いいねを押す +0
小葫芦

これは 2 とは異なります。単に正しい方法を選択しなかっただけです。たとえば、

Article.query.filter(Article.title.ilike('%ce%'))

いいねを押す +0
小葫芦

木がある、木がある

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート