我正在搜索php中的mysql数据库中的字符串,我正在使用like关键字。问题是当我从用户输入同义词时。喜欢在数据库中使用所有名称为shoe的产品,并且用户输入鞋子或一些不匹配的单词。如何搜索这些不同的条件.. 请指导一下。
目前我正在使用以下选择查询
Select * from table where name like '%user entered string%'
请指导如何解决这些问题
答案 0 :(得分:1)
让我们总结一下。
我们假设您有一个表products
,我高度假设并希望它包含具有唯一ID的产品。
products
id product
1 Shoes
2 Trousers
等等。如果你要添加另一列,比方说,同义词,它看起来像这样:
products
id product synonyms
1 Shoes Footwear, stuff on feet,
2 Trousers
我们不希望这个。您必须选择同义词列,解析字符串并确保在您希望为每个产品添加新同义词时不会破坏该列。
拥有一个原子数据库更有意义,你可以在其中有一个同义词表,其中每个同义词引用了products表中的唯一id,这样就可以轻松删除旧的同义词并添加新的同义词。
products
id product
1 Shoes
2 Trousers
synonyms
id product_id synonym
1 1 Footwear
2 1 stuff on feet
如果原始的select like语句失败,则可以在此表中查找。
使用外部数据源也是可能的,但如果您想控制流量并避免外部源,这可能是最合适的方式。
答案 1 :(得分:0)
对我而言,最好的方法是,当您添加到基地时,将所有匹配可能性关键字(鞋子,鞋类,男士服饰等)添加到所有产品(到关键字列),哪个用户将被搜索。并从此列(或表)中搜索产品。