【问题标题】:What is the best way to implement advance search like "{{Entity1}} {{Action}} {{Entity2}}"实现“{{Entity1}} {{Action}} {{Entity2}}”等高级搜索的最佳方法是什么
【发布时间】:2016-09-06 08:20:22
【问题描述】:

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

目前对群组名称、活动名称、页面名称和用户名的正常搜索甚至可以搜索他们的描述和帖子。

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

"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 个表:名称和类型,名称可以是任何内容,类型将类似于:用户、技能、名称、公司、城市、组

【问题讨论】:

    标签: php mysql algorithm search


    【解决方案1】:

    您可以通过搜索字符串来做到这一点。

    1. 在字符串中首先搜索“in”、“from”和“for”。(需要有空格,以免名称冲突)
    2. 根据第 1 步的结果,将字符串分成两部分。例如,“来自纽约的罗伯特”将是数组(“罗伯特”,“纽约”)
    3. 根据您的第 1 步和第 2 步查找相应的表格,例如,第 2 步可以在指定(艺术家)或姓名(罗伯特)中搜索第一个值,第二个值将在位置中。
    4. 您需要在其他情况下遵循相同的操作。
    5. 在单个数组中构建所有可能结果的数组及其 url,例如 group 将具有 group url,person 将具有 profile url,并且在前端简单地循环您的输出。

    【讨论】:

      猜你喜欢
      • 2013-11-03
      • 2010-12-14
      • 2021-04-24
      • 2017-04-22
      • 2013-05-25
      • 2016-05-23
      • 2016-01-19
      • 2016-08-21
      • 2014-03-26
      相关资源
      最近更新 更多