什么是最好的方式来实现像“;{{Entity1}}{Action}}{Entity2}}”;


What is the best way to implement advance search like "{{Entity1}} {{Action}} {{Entity2}}"

我有一个具有以下功能的网站:组、事件、页面和用户。

目前,对群组名称、事件名称、页面名称和用户名的正常搜索正在进行,甚至可以对其描述和帖子进行搜索。

但我想实现一些智能搜索,比如有人搜索:

"Robert from New York" - it will return all users from new york whose name is robert
"Artist from London" - it will return all users who writes artists in their profession and city is London
"Developer in Google" - it will return all users who works puts writes developer in their profession and google in comapny
"Groups for Entertainment" - it will return all groups which is under Entertainment category

我已经为类别、城市、公司、组、事件、用户、页面和操作划分了表格。

我想用最好、最快的方法来做这样的事情,只是建议我一些性能好、可扩展的方法,例如,如果将来增加任何操作,那么可以很容易地实现,而不会打破以前的操作。

非常感谢:)

在用字段搜索之前,我还计划再放一个表:名称和类型,名称可以是任何东西,类型可以是:用户、技能、职务、公司、城市、集团

您可以通过搜索字符串来完成此操作。

  1. 首先在字符串中搜索"in"、"from"answers"for"。(需要有空间,这样名称就不会冲突)
  2. 根据步骤1的结果,将字符串一分为二。例如,"Robert from New York"将是数组("Robert","New York)
  3. 例如,根据步骤1和步骤2查找相应的表格,步骤2可以在名称(艺术家)或名称(罗伯特)中搜索第一个值,而在位置中搜索第二个值
  4. 对于其他场景,您需要遵循相同的步骤
  5. 在单个数组中构建所有可能结果的数组,以及它的url。类似于group的组将有group url,person将有profile url,在前端只需循环您的输出