搜索方法显示与输入项目类似的结果

时间:2013-03-12 14:37:35

标签: php mysql search catalog

我正在为社区周围的一些农民建立一个数据驱动的网站(使用PHP和MySQL)(好吧,你会在一秒钟内看到)。他们希望能够列出他们的产品,并让人们搜索这些产品,并且他们的名字会出现,并附上详细描述所有产品的页面链接。

虽然我知道这将是一个长长的清单,我想,“因为每个搜索到mysql数据库是挑剔的 - 包括大小写敏感的 - 我只是做一个列表按字母顺序排列,人们可以从下拉框中选择什么他们想要搜索。没问题。“

嗯,现在这是一个问题。他扩展了网站的参数。他现在想要包括手工制作和自制产品。毋庸置疑,我们从几十种到数百种潜在产品,现在下拉列表已不再可行。但是,如果使用了触手可及的文本字段搜索网站,除非他们键入它没有拼写错误,并使用相同的情况下,他们不会从搜索准确的结果。

有人可以推荐另一种方法吗?我知道“LIKE”搜索,但它并没有真正解决我的问题 - 特别是因为它可能会在搜索中产生误报。任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:0)

嗯,问题有些模糊,因为你在谈论多个搜索参数。

这更像是一种设计选择。例如,请考虑以下事项:

  • 对于“自制”或“手工制作”等项目,也许在输入字段下方,您应该有一个复选框,人们可以在搜索中添加其他标记
  • 说,搜索名称“约翰史密斯”,并检查“手工制作”和“自制”
  • 数据库中的“手工”和“自制”字段将始终相同(开/关)

因此,sql查询可能是这样的:

SELECT * FROM products WHERE farmername LIKE '%$search%' AND handmade = 'handmade'

或者,在输入数据时,如果选中手工制作,请在手工制作中插入一个整数,其中1表示手工制作,0手工制作未经检查

因此,您的查询将进入AND手工制作= 1(或0),而不是手工制作

这些只是让你前进的一些想法,但这更像是一个设计决策,而不是数据库的决定,你如何创建表来使用标志

答案 1 :(得分:0)

我会使用两个表:

  • 一个包含所有可能的搜索字词
  • 一个与适用的任何术语的同义词(EG“手工制作”和“自制”)

在文本框中输入字符时,使用AJAX搜索第一个表中的值。使用以下命令返回可能的术语列表:

  

从search_table中选择术语,其中术语如'%< input string>%'

只有少于10次点击时才开始返回值。 (当IE输入2个字母时,IE不会填充)。然后,当输入特定术语时,在第二个表中搜索同义词并包括搜索结果。在结果页面中,指明您包含了同义词,并且每个都可以设置一个“X”来选择重新搜索那些被排除的人。

请注意,“like”不区分大小写。