因为现在做一个查询功能,输入一个字符串,去查询匹配的内容,这个字符串可能存在于多个字段。
现在参考用了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了吧。。。求大神推荐个解决办法
PHP中文网2017-04-17 14:59:46
Flask-WhooshAlchemy を使ったことはありませんが、表現から判断すると @digwtx さんがおっしゃるようにあいまい一致の書き方が間違っているか、長さが制限されているのかもしれません。
MySQL を使用している場合、MySQL では一致する文字の最小長が 4 文字に制限されています。一致する結果の詳細が表示されるのは、それが 4 文字を超えている場合のみです。
フラスコでの SQLAlchemy の基本的なクエリの詳細
伊谢尔伦2017-04-17 14:59:46
whoosh_index このメソッドは、データベースと全文検索エンジンの間の同期を維持するために、データベース内の既存のデータをすべて削除して、再度開始します。
高洛峰2017-04-17 14:59:46
これは 2 とは異なります。単に正しい方法を選択しなかっただけです。たとえば、
Article.query.filter(Article.title.ilike('%ce%'))