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%,%很重要,因爲它是任何字符的替代品,但數據庫將無法完全使用索引 –