我在php中的mysql数据库中搜索字符串,我正在使用like关键字进行搜索。问题是当我从用户输入同义词时。就像在数据库中,我有所有产品的名称鞋,用户输入鞋类或一些不匹配的words.how来搜索这些不同的条件。请在此指导。目前我使用以下选择查询
Select * from table where name like '%user entered string%'
请指导如何应对这些情况
63lcw9qa1#
让我们总结一下。让我们假设您有一个表products,我高度假设并希望它由具有唯一ID的产品组成。
products
products id product 1 Shoes 2 Trousers
如果你要添加另一个列,比如说,同义词,它看起来像这样:
products id product synonyms 1 Shoes Footwear, stuff on feet, 2 Trousers
我们不想这样您必须选择同义词列,解析字符串,并确保在希望为每个产品添加新的同义词时不会破坏该列。拥有一个原子数据库会更有意义,在那里你会有一个同义词表,每个同义词引用你的产品表中的唯一id,这样就很容易删除旧的同义词和添加新的同义词。
products id product 1 Shoes 2 Trousers synonyms id product_id synonym 1 1 Footwear 2 1 stuff on feet
如果原始的select like语句失败,则可以在此表中查找。使用外部数据源也是一种可能性,但如果你想控制流并避免外部源,这可能是最合适的方法。
niknxzdl2#
对我来说,最好的方法是,添加所有匹配的可能性关键字(鞋,鞋类,男装等)的所有产品(关键字栏),当你添加到基地,用户将搜索。并从此列(或表)中搜索产品。
2条答案
按热度按时间63lcw9qa1#
让我们总结一下。
让我们假设您有一个表
products
,我高度假设并希望它由具有唯一ID的产品组成。如果你要添加另一个列,比如说,同义词,它看起来像这样:
我们不想这样您必须选择同义词列,解析字符串,并确保在希望为每个产品添加新的同义词时不会破坏该列。
拥有一个原子数据库会更有意义,在那里你会有一个同义词表,每个同义词引用你的产品表中的唯一id,这样就很容易删除旧的同义词和添加新的同义词。
如果原始的select like语句失败,则可以在此表中查找。
使用外部数据源也是一种可能性,但如果你想控制流并避免外部源,这可能是最合适的方法。
niknxzdl2#
对我来说,最好的方法是,添加所有匹配的可能性关键字(鞋,鞋类,男装等)的所有产品(关键字栏),当你添加到基地,用户将搜索。并从此列(或表)中搜索产品。