2015-11-01 64 views
-1

场景:我正在构建一个基于用户搜索条件的程序员,设计师,商务人员等配对的Web应用程序。如何根据多个动态标准搜索数据库?

如何根据搜索者输入的标准返回最相关的搜索结果?

例如:寻找具有PHP,Angular,MySQL技能的程序员的商业用户。

每个技术人员将是一个单独的标签(Tag1中= PHP,与Tag2 =角,标签3 =的MySQL)等每一个“人”对象将被由该数据的不同组合。

有查询数据库,而不是在人表中的列各项技能,并有查询运行基于所述技能的存在寻找一个更优雅的方式?

我想,而不是多列我还可以建立一个1:人,技能和含有该技能只返回结果之间一对多的关系。不过,我觉得这样会返回更多的行。

一个更具体的例子是如何#1让你来标记多个标签问题......如何这些标记/搜索的问题,并存储在数据库中?

+0

关于你的最后一个问题:因为标签上的号码,是有限的(5)它可能是一组固定的列或数组(既违反1NF,但并不像hamfull,因为它似乎,如果它可以在代码中处理) – wildplasser

回答

0

你没有提及你正在使用哪个数据库。如果你的数据库很好地处理了基于数组的搜索(比如PostgreSQL),那么为了搜索性能的原因,这对于一组固定的列来说更可取。

现在你可能遇到的一个大问题是同义词。如果有人搜索Postgres而不是PostgreSQL呢?

在我的项目之一,我们改变用途PostgreSQL的这样的事情全文搜索。在这种情况下,你可以有一组单词,它们变成了一个tsvector,并且有一组同义词,你可以对拼写,词干,同义词等进行标准化。它是解决这个问题的一种方法,但需要一些额外的代码(也可能是触发器)。