0
我想实现一个搜索functionaltiy的餐厅,目前在我的数据库中的字段menu_type是一个varchar,值由逗号分裂逗号分隔的JSON
"Burger, Cafe, Italian, American,Irish"
我怎样才能使分离这样,当有人对“汉堡”搜索,它会显示他一切具有汉堡的结果只能作为menu_type或“汉堡”是他们menu_type的一部分
@app.route('/api/restaurants/search/',methods=['GET'])
def get_restaurant():
menu = request.json.get('menu')
restaurant = Restaurant.query.filter_by(menu_type=menu).all()
return jsonify(json_list=[i.serialize for i in restaurant])
我的餐厅型号:
class Restaurant(db.Model):
__tablename__ ='Restaurant'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
address1 =db.Column(db.String(128))
address2 = db.Column(db.String(32))
phone =db.Column(db.Integer)
lat = db.Column(db.Float(precision='12,10'))
lng = db.Column(db.Float(precision='12,10'))
cost = db.Column(db.Integer)
menu_type = db.Column(db.String(64))
rate =db.Column(db.Float(precision='3,2'))
offer=db.Column(db.String(128))
@property
def serialize(self):
"""Return object data in easily serializeable format"""
return {
'id' : self.id,
'name': self.name,
'address1' : self.address1,
'address2': self.address2,
'phone' : self.phone,
'lat': self.lat,
'lng' : self.lng,
'cost': self.cost,
'menu_type' : self.menu_type,
'rate': self.rate,
'offer' : self.offer
}
要搜索汉堡,你的SQL查询将是SELECT * FROM your_table_name WHERE menu_type LIKE%Burger%;但是你可以使用menu_types进行标准化并制作一个表格,并且只保留对主表格的引用。那么数据库将能够使用索引来搜索菜单类型(现在不能) –
嗨!感谢您的建议! – Abdul
Like%search_word%,%很重要,因为它是任何字符的替代品,但数据库将无法完全使用索引 –