【问题标题】:OO Class Design - interacting two classes for searchingOO 类设计 - 交互两个类进行搜索
【发布时间】:2016-12-07 15:22:15
【问题描述】:

我正在尝试为个人项目设计课程,但我遇到了困难。我在数据库设计方面有更多经验,并且找不到我的类应该如何最好地关联/交互的 OO 解决方案。

我的 (PHP) 项目是一个工具,它将在单个网站的一个或多个 pages 中搜索给定的 phrase。输出应显示短语、找到它的次数、在哪些页面上找到它以及在该页面上出现了多少次。

所以一个词组可以有很多相关的页面,而一个页面可以包含很多词组。

我很难掌握如何将我的两个课程联系起来。我知道我的phrase 类需要存储文本短语,page 类需要关于自身的信息(页面 URL、页面名称、页面内容等)。

除此之外,我看不到在哪里可以逻辑地存储我需要的方法

  • 在一个页面(或多个页面)中搜索一个短语
  • 计算在所有搜索过的页面中找到一个短语的次数
  • 计算一个短语在每个特定页面上出现的次数
  • 在页面中每个出现的短语周围提供(例如)20 个字符的摘录
  • 返回包含上述信息的特定短语的数组

有一个 phraseFinder 类,它接受一个 phrase 和一个或多个 page(s),并将所有这些方法和信息存储在那里是否有意义?

【问题讨论】:

  • 是的,搜索算法应该被隔离到它自己的类中。我会以 map reduce 的方式实现它。
  • 页面内容在哪里?您会搜索 html 页面,还是要将页面内容加载到 Page 对象中,然后在那里搜索短语。这两种情况需要不同的解决方案吗?
  • 所有页面内容都存储在数据库中。不需要将它们加载到自己的对象中,但我认为这对我的设计来说是最好的,以防我将来想搜索其他来源。

标签: php oop design-patterns


【解决方案1】:

在一个页面(或多个页面)中搜索一个短语

搜索服务

计算在所有搜索过的页面中找到一个短语的次数...

我建议您首先建模一个嵌套结构,将您的搜索服务需要返回给应用程序的结果描述为一个简单的 JSON 对象。然后将其中的每个对象或数组转换为代码中的一个类,如下所示:

{
  "occurrenceInfo": {
    "phrase": "cat",
    "page": {
      "id": 30,
      "name": "Cat runs on the legs"
    },
    "occurrenceCount": 50,
    "occurrences": [
      {
        "position": 500,
        "excerpt": "a portion of text of the cat"
      }
    ]
  }
}

你可以把它变成OccurenceInfo、PhraseInfo、PageInfo、PageOccurenceInfo等类。

【讨论】:

    猜你喜欢
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2015-03-11
    相关资源
    最近更新 更多