当前位置:文档之家› APEngine物力引擎简介

APEngine物力引擎简介

APEngine物力引擎简介
APEngine物力引擎简介

APE(物力引擎)

APE,设么是APE呢。APE(Actionscript Physics Engine)是一个ActionScript3写成的物理引擎,用于模拟现实中物体发生的运动和碰撞。它是免费、开源的,遵循MIT协议。

看来特别适用用来做游戏开发,已经有许多很有趣的应用使用这个开发的。

现提供了Java Port,和C++ SDL Port

官方网址为:https://www.doczj.com/doc/1711144746.html,/ape/

下载地址为:https://www.doczj.com/doc/1711144746.html,/ape/ape_a045.zip(包含两个demo,api,swc文件,和源码)

官网的两个例子:

Demo1:https://www.doczj.com/doc/1711144746.html,/ape/demo1.htm

Demo2: https://www.doczj.com/doc/1711144746.html,/ape/demo2.htm

API地址: https://www.doczj.com/doc/1711144746.html,/ape/docs/api/

下面中文版,网上搜集的

APE中总共才12个类,用起来相当的方便。这12个类的继承关系如下:

目录:

AbstractCollection

Group

Composite

AbstractItem

AbstractConstraint

SpringConstraint

AbstractParticle

RectangleParticle

CircleParticle

WheelParticle

Vector

APEngine

AbstractCollection(子类有:Group和Composite)

此类为群组性的基类。你不应实例化这个类,而应该使用该类的子类。

属性:

constraints 属性

constraints:Array [只读]

一个数组,包含所有被加入到AbstractCollection中的AbstractConstraint类的实例。

particles 属性

particles:Array [只读]

一个数组,包含所有被加入到AbstractCollection中的AbstractParticle类的实例。

sprite 属性

sprite:Sprite [只读]

为渲染和增加children而提供的作为容器使用的Sprite。当这个sprite第一次被请求时,这个sprite会自动的加入到APEngine类的全局容器中。

构造函数:

public function AbstractCollection()

方法:

addConstraint () 方法

public function addConstraint(c:AbstractConstraint):void

在收集器中增加一个约束。

参数c:AbstractConstraint —被加入的约束.

addParticle () 方法

public function addParticle(p:AbstractParticle):void

在AbstractCollection中加入一个AbstractParticle

参数p:AbstractParticle —被加入的粒子

cleanup () 方法

public function cleanup():void

调用AbstractCollection每个成员的cleanup()方法. 当AbstractCollection 从他的父容器中被移除的话,cleanup()方法会自动的被调用。

getAll () 方法

public function getAll():Array

返回一个数组,这个数组包含被加入到AbstractCollection.中的每一个粒子和约束。

init () 方法

public function init():void

通过调用每一个成员的init()方法实例化这个AbstractCollection的每一个成员。

paint () 方法

public function paint():void

通过调用每一个成员的paint()方法来渲染AbstractCollection的每个成员。

removeConstraint () 方法

public function removeConstraint(c:AbstractConstraint):void

从收集器中删除参数指定的约束。

参数c:AbstractConstraint —将被移除的约束。

removeParticle ()方法

public function removeParticle(p:AbstractParticle):void

从AbstractCollection中移除一个AbstractParticle

参数p:AbstractParticle —将被移除的粒子

——————————————————————————————————————————————————————————————————————————————Group(继承自AbstractCollection)

组可以包含粒子,约束和复合体。组可以被设置为和其他的组进行碰撞检测。

属性:

collideInternal:Boolean [读写]

决定这个组内的成员彼此是否进行碰撞检测;

collisionList:Array [只读]

返回一个数组,这个数组包含所有和这个组进行碰撞检测的所有组的实例。

composites:Array [只读]

返回一个数组,这个数组包含所有加入到这个组的复合体。

构造函数

public function Group(collideInternal:Boolean = false)

Group是APE中的主要的用于组织的类。一旦创建了组,并把粒子,约束,复合体加入组,那么这些东西也就加入了APEngine。组可以包含粒子,约束和复合体。复合体只能包含粒子和约束。

参数:

collideInternal:Boolean (default = false)

方法:

addCollidable()方法

addCollidable(g:Group):void

加入一个组的实例与这个组进行碰撞检测。

addCollidableList()方法

public function addCollidableList(list:Array):void

加入AbstractCollection实例的数组,让数组中的元素与这个组进行碰撞检测。

addComposite()方法

public function addComposite(c:Composite):void

在这个组中加入复合体

cleanup()方法

public override function cleanup():void

调用组的cleanup()方法将会调用组中所有成员的cleanup()方法。当组从APEngine 引擎中移除时,组的cleanup()方法会自动的调用。

getAll()方法

public override function getAll():Array

返回一个包含组中所有粒子,约束,复合体的数组。

init()

public override function init():void

通过依次调用组中每个成员的init()方法来初始化组中的每个成员。

paint()方法

public override function paint():void

Paints 组中的所有成员. 这个方法由APEngine 类自动的调用。

removeCollidable()方法

public function removeCollidable(g:Group):void

从这个组的collidable list中移除一个组。

removeComposite()方法

public function removeComposite(c:Composite):void

从组中移除复合体。

————————————————————————————————————————————————————————————————————

Composite(继承自AbstractCollection)

复合体可以包含粒子和约束。复合体可以加入到一个组中,就像粒子和约束一样。注意:复合体中的成员彼此不能进行碰撞检测。

属性:

fixed:Boolean [读写]

决定复合体的状态是否固定。设置这个值为true或false将会设置复合体中所有组成的粒子的固定状态为true或false。当复合体中的任何一个粒子的状态为不固定时,这个值返回的都为false。

构造函数:

public function Composite()

方法:

rotateByAngle()方法

public function rotateByAngle(angleDegrees:Number, center:Vector):void

围绕给定的中心,使复合体旋转参数指定的角度。

rotateByRadian()方法

public function rotateByRadian(angleRadians:Number, center:Vector):void

围绕给定的中心,使复合体旋转参数指定的弧度。

————————————————————————————————————————————————————————————————————

AbstractItem(子类有:AbstractConstraint和AbstractParticle)

所有约束和粒子的基类

属性

alwaysRepaint 属性

alwaysRepaint:Boolean [read-write]

为了更好的运行,为了避免不必要的重绘,固定的粒子和弹性约束不需要调用他们的paint ()方法,当一个弹性约束的两端所连接的粒子是固定的话,那么这个弹性约束被认为是固定的。这个属性设置为true的时候,如果粒子和弹性约束的fixed属性也为true的时候,

粒子和弹性约束的paint()方法会被强制调用。如果你想要旋转固定的粒子和弹性约束的话,你应该设置他们的repaintFixed属性为true。如果粒子和弹性约束不是固定的话,alwaysRepaint属性是没有效果的。

sprite 属性

sprite:Sprite [只读]

为渲染和增加children而提供的作为容器使用的Sprite。当这个sprite第一次被请求时,这个sprite会自动的加入到APEngine类的全局容器中。

visible 属性

visible:Boolean [只写]

决定这个项是否可见。

构造函数

AbstractItem ()

public function AbstractItem()

方法

cleanup () 方法

public function cleanup():void

当包含一个项目(粒子或约束)的组(组或复合体)从APEngine移除的时候,这个方法被自动的调用。

init ()方法

public function init():void

当包含一个项目(粒子或约束)的组(组或复合体)被加到引擎,一个项目(粒子或约束)的复合体被加到组,一个项目(粒子或约束)被加到组或复合体的时候,这个方法会被自动的调用。

paint () 方法

public function paint():void

这个项目的默认的渲染方法。当APEngine.paint()方法被调用的时候会自动的调用这个方法。

setFill () 方法

public function setFill(color:uint = 0xffffff, alpha:Number = 1):void

设置这个项的填充样式。

setLine () 方法

public function setLine(thickness:Number = 0, color:uint = 0x000000, alpha:Number = 1):void

设置这个项的样条线的样式。

setStyle () 方法

public function setStyle(lineThickness:Number = 0, lineColor:uint = 0x000000, lineAlpha:Number = 1, fillColor:uint = 0xffffff, fillAlpha:Number = 1):void

设置这个项的样条线和填充。————————————————————————————————————————————————————————————————————

AbstractParticle类(子类有:CircleParticle,RectangleParticle)(父类是:AbstractItem)所有粒子的基类

你不应该实例化这个类,而是应该使用这个类的子类。

属性:

center 属性

center:Vector [只读]

返回代表粒子当前位置的向量。

collidable属性

collidable:Boolean [读写]

决定这个粒子是否能和其它的粒子或约束碰撞。默认值为true。

elasticity 属性

elasticity:Number [读写]

这个粒子的弹性,标准的值在0到1之间。值越大,弹性越大。

在碰撞的过程中,弹性的值是累加的。如果一个粒子的弹性值设为0.4,另一个粒子的弹性制也设为0.4,那么在碰撞的时候弹性值就是0.8了,这和一个粒子的弹性值是0另一个弹性值是0.8产生的效果是一样的。

设置大于1的弹性值(单个粒子大于1或累加后大于1)将会使粒子获得比它原来更多的能量。(尽管现实中不可能,但是这是非常有意思的)

fixed 属性

fixed:Boolean [读写]

决定粒子是否固定。如果粒子是固定的话,早受到力的作用和在碰撞过程中将保持不动。固定的粒子非常适合用来模拟表面。

friction 属性

friction:Number [读写]

粒子表面的摩擦系数。值必须在0到1之间

0代表没有摩擦(理想光滑),1代表完全的摩擦(像胶水一样)

在碰撞中,摩擦系数也是累加的,但是被限制在1到0之间。例如,如果两个粒子表面的摩擦系数都是0.7的话,这两个粒子之间最终的摩擦力将会是1(完全的粘在一起)

在当前的版本中,仅仅只考虑动态的摩擦。静态的摩擦在下一个版本中可能会得到支持。当前的版本有一个bug,那就是当和摩擦系数大于0且不固定的粒子碰撞时会得到错误的行为。一个解决的办法就是,只给固定的粒子设置摩擦系数。

抛出错误

—当摩擦系数的值小于0或大于1时抛出ArgumentError

mass 属性

mass:Number [只写]

粒子的质量。大于0的值均为有效值。默认情况下所有的粒子的质量均为1.质量属性和粒子形状的大小没有关系。

抛出错误

—当质量小于0抛出ArgumentError

multisample属性

multisample:int [读写]

每一次循环中,进行碰撞检测的中间位置值,在一个快速移动的粒子中把这个值适当的设置大一些可以阻止穿透现象的发生。

position属性

position:Vector [读写]

粒子的位置属性。为了一些目的,得到粒子的位置是非常有用的。

当你获得粒子的位置的时候,你实际得到的是当前位置信息的一份拷贝。正因为这样,你不能通过修改你从粒子取得的有关位置的向量(Vector)的x参数和y参数来改变粒子的位置。你必须这样做:position=new Vector(100,100),或者你可以用px和py属性来代替。

修改粒子位置的三种方法:改变他的位置(直接),给它设置速度,在它上面应用一个力。设置非固定粒子的位置并不同于把他的fixed属性设置为true那样简单。一个处在它位置属性所指定位置的粒子的行为就好像它连接在一个0长度的弹簧上一样。

px属性

px:Number [读写]

粒子的x坐标

py 属性

py:Number [读写]

粒子的y坐标

velocity属性

velocity:Vector [读写]

粒子的速度。如果你想改变粒子的运动,你应该要么用这个属性,要么用addForce()方法。一般来说,addForce()方法慢慢的改变物体的运动状态,velocity属性适合瞬间的给物体设置一个速度来改变物体的运动状态(例如抛出物体)。

方法:

addForce () 方法

public function addForce(f:Vector):void

给粒子加一个力。当应用这个方法的时候,粒子的质量也考虑在内了,所以对于模拟风之类的效果来说,这个方法是非常适合的。

参数f:Vector —代表被添加力的向量。

addMasslessForce () 方法

public function addMasslessForce(f:Vector):void

为粒子添加一个忽略质量的力。当用这个方法的时候,粒子的质量被忽略。在模拟类似于重力的力的情况,这个方法很适合。

参数f:Vector —代表被添加力的向量。

setDisplay () 方法

public function setDisplay(d:DisplayObject, offsetX:Number = 0, offsetY:Number = 0, rotation:Number = 0):void

在渲染粒子的时候,分配一个显示对象(DisplayObject)来使用。

update ()方法

public function update(dt2:Number):void

在APEngine.step()方法中会自动的调用update()方法。用这个方法整合粒子。

————————————————————————————————————————————————————————————————————

RectangleParticle——》AbstractParticle——》AbstractItem

矩形的粒子

属性

angle 属性

angle:Number [读写]

矩形粒子旋转的度数。

height 属性

height:Number [读写]

矩形粒子的高度。

radian 属性

radian:Number [读写]

矩形粒子旋转地弧度。

注:尽管矩形粒子可以被旋转,但是它没有角速度。换句话说,在碰撞中,旋转状态不会改变,因旋转而产生的能量也不会应用到碰撞中。

width 属性

width:Number [属性]

矩形粒子的宽度。

构造函数

RectangleParticle ()

public function RectangleParticle(x:Number, y:Number, width:Number, height:Number, rotation:Number = 0, fixed:Boolean = false, mass:Number = 1, elasticity:Number = 0.3, friction:Number = 0)

参数

x:Number —初始x位置

y:Number —初始y位置

width:Number —这个粒子的宽度

height:Number —这个粒子的高度

rotation:Number (default = 0) —这个粒子旋转的弧度.

fixed:Boolean (default = false) —决定这个粒子是否固定。固定的粒子不受力和碰撞的影响,非常适合作为平面。不固定的粒子受力和碰撞的作用自由的移动。

mass:Number (default = 1) —粒子的质量

elasticity:Number (default = 0.3) —粒子的弹性. 值越高弹性越大

friction:Number (default = 0) —粒子表面的摩擦系数

注意:固定的粒子仍然可以改变它的旋转属性。

方法

init () 方法

public override function init():void

建立矩形粒子的视觉表象,当这个矩形粒子的父组(包含该粒子的组)的实例被加到APEngine中、矩形粒子的复合体被加入到组中、矩形粒子被加入到组或复合体中的时候,这个方法会自动的被调用。

paint () 方法

public override function paint():void

这个矩形粒子默认的渲染方法,这个方法会被APEngine.paint()方法自动的调用。

如果你想要自己定义渲染方法,你可以创建这个类的一个子类,并在子类中覆盖paint()方法。

————————————————————————————————————————————————————————————————————

CircleParticle——》AbstractParticle——》AbstractItem

子类:WheelParticle

圆形粒子

属性

radius 属性

radius:Number [读写]

粒子的半径

构造函数

CircleParticle () 构造器

public function CircleParticle(x:Number, y:Number, radius:Number, fixed:Boolean = false, mass:Number = 1, elasticity:Number = 0.3, friction:Number = 0)

参数:

x:Number —这个粒子的初始x位置.

y:Number —这个例子的初始y位置.

radius:Number —粒子的半径.

fixed:Boolean (default = false) —决定这个粒子是否固定。

mass:Number (default = 1) —粒子的质量.

elasticity:Number (default = 0.3) —粒子的弹力,值越大弹力越大。

friction:Number (default = 0) —粒子表面的摩擦力。

方法

init () 方法

public override function init():void

建立圆形粒子的视觉表象,当这个圆形粒子的父组(包含该粒子的组)的实例被加到APEngine中、圆形粒子的复合体被加入到组中、圆形粒子被加入到组或复合体中的时候,这个方法会自动的被调用。

paint () 方法

public override function paint():void

这个粒子默认的渲染方法,这个方法会被APEngine.paint()方法自动的调用。

如果你想要自己定义渲染方法,你可以创建这个类的一个子类,并在子类中覆盖

————————————————————————————————————————————————————————————————————

WheelParticle ——》CircleParticle ——》AbstractParticle ——》AbstractItem

用于模拟轮子行为的粒子

属性

angle 属性

angle:Number [只读]

轮子旋转的角度

angularVelocity 属性

angularVelocity:Number [读写]

轮子粒子的角速度。你可以通过修改这个值使轮子粒子旋转起来。

radian 属性

radian:Number [只读]

轮子旋转的弧度

speed 属性

speed:Number [读写]

轮子粒子的速度,你可以通过修改这个值使轮子旋转。

traction 属性

traction:Number [读写]

在碰撞中牵引力的大小。这个属性决定了当轮子粒子和其它的粒子接触是到底有多少牵引力作用在轮子粒子上。如果这个值设为0,将不会有牵引力,就好像与轮子接触的平面是完全光滑的那样。这个值应该在0到1之间。

注意:frection(摩擦系数)和traction(牵引力)的行为是不同的。当轮子粒子在一个摩擦系数非常打的平面运动时,轮子粒子的运动速度将非常慢,好像平面上涂满了胶水。

构造函数

WheelParticle () 构造器

public function WheelParticle(x:Number, y:Number, radius:Number, fixed:Boolean = false, mass:Number = 1, elasticity:Number = 0.3, friction:Number = 0, traction:Number = 1)

参数:

x:Number —初始x位置

y:Number —初始y位置.

radius:Number —粒子的半径.

fixed:Boolean (default = false) —决定这个粒子是否是固定的。

mass:Number (default = 1) —粒子的质量

elasticity:Number (default = 0.3) —粒子的弹力。值越大塔里越大。

friction:Number (default = 0) —粒子表面的摩擦力。

traction:Number (default = 1) —粒子表面的牵引力。

注:固定的轮子粒子也可以自由度旋转

方法

init ()方法

public override function init():void

建立粒子的视觉呈现。当粒子被加入到引擎时这个方法自动被调用。

paint () 方法

public override function paint():void

这个粒子默认的渲染方法。在快速的测试中你应该仅仅用这个默认的paint()方法。如果你有自己的特殊的要求,你应该自己写一个类,要么让这个类继承APE中的粒子或约束,要么把他们组合在一起。然后在你自己的类中定义你自己的渲染方法。

update () 方法

public override function update(dt:Number):void

————————————————————————————————————————————————————————————————————

AbstractConstraint(父类是:AbstractItem)(子类有:SpringConstraint)

你不应实例化这个类,而应该使用它的子类。

属性

stiffness 属性

stiffness:Number [read-write]

是约束变得僵硬,值越大越僵硬。这个值应该在0到1之间。根据运行的情况,这个直设的过高会导致应用不稳定。

————————————————————————————————————————————————————————————————————

SpringConstraint——》AbstractConstraint ——》AbstractItem

一个像弹簧的约束,用来连接两个物体。

属性

angle属性

angle:Number [只读]

连接在这个SpringConstraint(弹簧约束)上的两个粒子的位置所构成的角度。你可以在渲染方法中应用这个属性和center属性。

center 属性

center:Vector [只读]

连接在这个SpringConstraint(弹簧约束)上的两个粒子的位置的中心。你可以在渲染方法中应用这个属性和旋转属性。

collidable 属性

collidable:Boolean [只读]

决定两个粒子之间的区域是否接受碰撞检测。如果这个属性打开的话(即为true),你可以修改rectHeight属性和rectWidth属性来修改接受碰撞检测区域的尺寸大小。

currLength 属性

currLength:Number [只读]

返回弹簧约束(SpringConstraint)的长度,即两个被链接的粒子的距离。

fixed 属性

fixed:Boolean [只读]

如果被链接的两个粒子的fixed属性都为true时返回true。

fixedEndLimit 属性

fixedEndLimit:Number [读写]

当弹簧约束(SpringConstraint)为可接受碰撞的并且两端的粒子只有一个是固定的,这个值将处理固定端粒子附近的碰撞,纠正难以解决的碰撞问题。这个值在0.0到1.0之间。

radian 属性

radian:Number [只读]

连接在这个SpringConstraint(弹簧约束)上的两个粒子的位置所构成的旋转的值。你可以在你自定义的渲染方法中应用这个属性和center属性。

rectHeight 属性

rectHeight:Number [读写]

如果collidable属性为true,你可以设置这两个粒子之间能接受碰撞的矩形区域的高度。这个值是大于零的。如果你设置这个值为10,那么碰撞区域矩形的高度为10像素,这个高度与两个连接的粒子的连线垂直的。

rectScale属性

rectScale:Number [读写]

如果collidable属性为true,你可以设置这两个粒子之间能接受碰撞的矩形区域的缩放。有效值在0到1之间。如果你将值设为1,这个碰撞区域将扩展到来被链接的两个粒子处。设置一个较低的值,会使碰撞区域按距离的百分比缩放。这个值设的过大会使碰撞矩形扩张甚至超过两端的粒子。

restLength 属性

restLength:Number [读写]

restLength 属性设置弹簧约束(SpringConstraint)的长度。如果两端的粒子位置没有因受到外力而改变的话,那么这个属性的值等于两端粒子的距离。弹簧约束将总是试着使两个粒子的距离等于这个属性的值。这个值必须大于0.

构造函数

SpringConstraint ()

public function SpringConstraint(p1:AbstractParticle, p2:AbstractParticle,

stiffness:Number = 0.5, collidable:Boolean = false, rectHeight:Number = 1,

rectScale:Number = 1, scaleToLength:Boolean = false)

参数:

p1:AbstractParticle —约束所连接的第一个粒子。

p2:AbstractParticle —约束所连接的第二个粒子。

stiffness:Number (default = 0.5) —弹簧的强度。有效值在0到1之间。低值的效果就像软

弹簧,高值的效果如同硬弹簧。

collidable:Boolean (default = false) —决定此约束是否接受碰撞检测。

rectHeight:Number (default = 1) —如果这个约束是可接受碰撞检测的,可碰撞的区域的高度可设置为像素值。高度和被链接的两个粒子的连线垂直。

rectScale:Number (default = 1) —如果这个约束是可接受碰撞检测的,可被碰撞的区域的缩放可被设置为一个0到1之间的值。这个缩放是两个被链接的粒子之间的距离的一个百分数。

scaleToLength:Boolean (default = false) —如果这个约束是可接受碰撞检测的并且这个值设为true时,可接受碰撞的区域将随着两个粒子的距离而缩放。

方法

init ()方法

public override function init():void

建立弹簧约束的视觉呈现。当此弹簧约束的父组的实例被加到APEngine中、此弹簧约束的复合体被加到组中、次弹簧约束被加到复合体或组中的时候,这个方法会自动的被调用。

isConnectedTo () 方法

public function isConnectedTo(p:AbstractParticle):Boolean

如果传递给此函数的参数是被链接的两个粒子之一则返回true。

参数p:AbstractParticle

返回Boolean

paint () 方法

public override function paint():void

这个约束的默认渲染方法。这个方法由APEngine.paint()自动的调用。如果你想要自定义渲染方法,你可以创建一个这个类的子类,并在子类中覆盖paint()方法。

setCollidable ()方法

public function setCollidable(b:Boolean, rectHeight:Number, rectScale:Number, scaleToLength:Boolean = false):void

参数:

b:Boolean

rectHeight:Number

rectScale:Number

scaleToLength:Boolean (default = false)

setDisplay ()方法

public function setDisplay(d:DisplayObject, offsetX:Number = 0, offsetY:Number = 0, rotation:Number = 0):void

当渲染这个约束时分配一个显示对象以备使用。

参数

d:DisplayObject

offsetX:Number (default = 0)

offsetY:Number (default = 0)

rotation:Number (default = 0)

————————————————————————————————————————————————————————————————————

Vector类

属性

x 属性

public var x:Number

y 属性

public var y:Number

构造函数

Vector () constructor

public function Vector(px:Number = 0, py:Number = 0)

参数:

px:Number (default = 0)

py:Number (default = 0)

方法

copy () 方法

public function copy(v:Vector):void

参数:

v:Vector

cross () 方法

public function cross(v:Vector):Number

参数

v:Vector

返回:

Number

distance () 方法

public function distance(v:Vector):Number

参数:

v:Vector

返回

Number

divEquals ()方法

public function divEquals(s:Number):Vector 参数

s:Number

返回

Vector

dot () 方法

public function dot(v:Vector):Number

参数:

v:Vector

返回:Number

magnitude ()方法

public function magnitude():Number

返回:Number

minus () 方法

public function minus(v:Vector):Vector

参数:

v:Vector

返回

Vector

minusEquals ()方法

public function minusEquals(v:Vector):Vector 参数:

v:Vector

参数

Vector

mult ()方法

public function mult(s:Number):Vector

参数:

s:Number

返回

Vector

multEquals () 方法

public function multEquals(s:Number):Vector

参数

s:Number

返回

Vector

normalize ()方法

public function normalize():Vector

返回

Vector

plus () 方法

public function plus(v:Vector):Vector

参数

v:Vector

返回

Vector

plusEquals () 方法

public function plusEquals(v:Vector):Vector

参数

v:Vector

返回

Vector

setTo () 方法

public function setTo(px:Number, py:Number):void 参数

px:Number

py:Number

times () 方法

public function times(v:Vector):Vector

参数:

v:Vector

返回

Vector

toString () 方法

public function toString():String

放回

String

————————————————————————————————————————————————————————————————————

APEngine这是一个静态的类,所以里面的所用的属性和方法都是静态的。

属性:

constraintCollisionCycles属性

constraintCollisionCycles:int (读写)

决定在一个APEngine.step()中约束条件和位置更正的次数,这个参数能很好的增加系统的稳定性和阻止穿透现象,尤其是在约束和粒子比较复杂的情况中。这个数字越大,系统越稳定,当然消耗的资源也比较多。

此属性和constraintCycles属性的不同之处在于它在一个APEngine.step()中同时解决了Constraints和collisions。此属性的默认值是1.

constraintCycles属性

constraintCycles:int(读写)

此属性的默认值是0,和constraintCollisionCycles属性类似,不同之处在于它只解决约束问题。

container属性

container:DisplayObjectContainer(读写)

粒子和约束的painting方法默认的容器。如果你要用到内建的painting方法,你必须首先设置它。

damping属性

damping:Number(读写)

全局的阻力,值在0到1之间。值越大阻力越小,当值为一时,没有阻力。当值为0时,所有的粒子都不能运动了(因为阻力太大了)。默认值为1.

damping会减慢你的模拟速度使你的模拟更稳定。如果你发现你的模拟出现跑飞现象,试着更正damping的值。

方法:

addForce()方法

addForce(v:Vector):void

给系统中的所有粒子增加一个力。当用这个方法的时候,粒子的质量也会考虑在内,它在模拟系统中类似风的力是非常有效的。质量大的物理受这个力的影响将小于质量小的物体。注意:物体的尺寸不影响物体的物理行为。

参数:v:Vector——一个矢量,用来代表加入到系统中的力。

addGroup()方法

addGroup(g:Group):void

参数g:Group

addMalllessForce()方法

addMalllessForce(v:Vector):void

为系统中的所有粒子增加一个无质量的力,在用这个方法的时候,粒子的质量不考虑在内。

搜索引擎基本工作原理

搜索引擎基本工作原理 目录 1工作原理 2搜索引擎 3目录索引 4百度谷歌 5优化核心 6SEO优化 ?网站url ? title信息 ? meta信息 ?图片alt ? flash信息 ? frame框架 1工作原理 搜索引擎的基本工作原理包括如下三个过程:首先在互联网中发现、搜集网页信息;同时对信息进行提取和组织建立索引库;再由检索器根据用户输入的查询关键字,在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并将查询结果返回给用户。 1、抓取网页。每个独立的搜索引擎都有自己的网页抓取程序爬虫(spider)。爬虫Spider顺着网页中的超链接,从这个网站爬到另一个网站,通过超链接分析连续访问抓取更多网页。被抓取的网页被称之为网页快照。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。 2、处理网页。搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引库和索引。其他还包括去除重

复网页、分词(中文)、判断网页类型、分析超链接、计算网页的重要度/丰富度等。 3、提供检索服务。用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。 搜索引擎基本工作原理 2搜索引擎 在搜索引擎分类部分我们提到过全文搜索引擎从网站提取信息建立网页数据库 的概念。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP 地址范围内的互联网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。 另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。由于搜索引擎索引规则发生了很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,因此目前最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。 当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,

国内外著名搜索引擎介绍

七、 国内外著名搜索引擎介绍 教学目的 掌握常见搜索引擎的使用方法与技巧 教学内容 1、搜索引擎介绍 1.1搜索引擎发展 十几年前,WWW(World Wide Web,万维网)还没有诞生的时候,互联网上只有冰冷的 文字,没有图像和声音,而且网站数量也不多,感兴趣的网站就那么几个,可以在很短 的时间内就掌握其中的全部信息,搜索引擎完全没有出现的必要。1993年,互联网上出 现了最早的Web浏览器Mosaic,次年Netscape推出了Navigator。浏览器的发展促使 Web得到迅速推广,站点数目以惊人的速度增加,我们再也不能用传统记忆方式来应付 与日俱增的站点。于是,搜索引擎就诞生了。第一个搜索引擎的出生地在美国,它的名 字叫Archie,是由McGill大学的一个小组开发的。 1.2搜索引擎工作原理 利用自动搜寻软件,不断发现与收集各类新网址及网页,利用自动索引软件对网页进行 标引,建立记录的数据库。当用户输入提问关键词之后,以不同的检索方法在其数据库中找 出相关的记录,并按相关性顺序排列,将包含此关键词或符合检索条件的所有网址信息和指 向这些网址的链接反馈给用户,从而实现查询目的。简单地说,搜索引擎的原理,可以看作 三步:从互联网上抓取网页→建立索引数据库→在索引数据库中搜索排序。 1.3搜索引擎如何排列Web页面 依据是"位置/频率法"。 1.4搜索引擎词语介绍 简单搜索;词组搜索;语句搜索;目录搜索;高级搜索; 1.5搜索引擎的类型 按搜索引擎获取信息的不同:独立搜索引擎;元搜索引擎;网络搜索软件。 按组织信息的方式:目录搜索引擎;全文搜索引擎;分类全文型搜索引擎;智能搜索引擎。 按服务对象和规模:综合门户搜索引擎;垂直搜索引擎。 2、综合性搜索引擎 在互联网发展的最初阶段,网民在各项活动中的主要浏览对象几乎都是综合性的网站(或称 为门户性网站),所谓综合,指其提供信息与服务的范围广泛,从新闻、讨论组、免费信箱、 下载软件到图片的搜索,不固定在专一知识领域,涉及多种主题内容。 2.1 Google Google是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年 9月发明,Google Inc. 于1999年创立。2000年7月份,Google替代Inktomi成为Yahoo 公司的搜索引擎,同年9月份,Google成为中国网易公司的搜索引擎。98年至今,GOOGLE 已经获得30多项业界大奖。 GOOGLE基本搜索 Google支持大多数的搜索基本语法规则,比如‘ AND’、 ‘OR’、‘-’,Google无需用 明文的‘AND ’来表示逻辑‘与’操作,只要空格就可以了;Google用减号‘-’表示逻 辑‘非’操作;Google用大写的‘OR’表示逻辑‘或’操作; ·不区分英文字母大小写,所有的字母均当作小写处理; ·Google不支持通配符,如‘*’、‘?’等;

搜索引擎基本工作原理

搜索引擎基本原理 一.全文搜索引擎 在搜索引擎分类部分我们提到过全文搜索引擎从网站提取信息建立网页数据库的概念。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。 另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。由于近年来搜索引擎索引规则发生了很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,因此目前最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。 当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,出现的位置/频次,链接质量等——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。 二.目录索引 与全文搜索引擎相比,目录索引有许多不同之处。 首先,搜索引擎属于自动网站检索,而目录索引则完全依赖手工操作。用户提交网站后,目录编辑人员会亲自浏览你的网站,然后根据一套自定的评判标准甚至编辑人员的主观印象,决定是否接纳你的网站。 其次,搜索引擎收录网站时,只要网站本身没有违反有关的规则,一般都能登录成功。而目录索引对网站的要求则高得多,有时即使登录多次也不一定成功。

尤其象Yahoo!这样的超级索引,登录更是困难。(由于登录Yahoo!的难度最大,而它又是商家网络营销必争之地,所以我们会在后面用专门的篇幅介绍登录Yahoo雅虎的技巧) 此外,在登录搜索引擎时,我们一般不用考虑网站的分类问题,而登录目录索引时则必须将网站放在一个最合适的目录(Directory)。 最后,搜索引擎中各网站的有关信息都是从用户网页中自动提取的,所以用户的角度看,我们拥有更多的自主权;而目录索引则要求必须手工另外填写网站信息,而且还有各种各样的限制。更有甚者,如果工作人员认为你提交网站的目录、网站信息不合适,他可以随时对其进行调整,当然事先是不会和你商量的。 目录索引,顾名思义就是将网站分门别类地存放在相应的目录中,因此用户在查询信息时,可选择关键词搜索,也可按分类目录逐层查找。如以关键词搜索,返回的结果跟搜索引擎一样,也是根据信息关联程度排列网站,只不过其中人为因素要多一些。如果按分层目录查找,某一目录中网站的排名则是由标题字母的先后顺序决定(也有例外)。 目前,搜索引擎与目录索引有相互融合渗透的趋势。原来一些纯粹的全文搜索引擎现在也提供目录搜索,如Google就借用Open Directory目录提供分类查询。而象 Yahoo! 这些老牌目录索引则通过与Google等搜索引擎合作扩大搜索范围。在默认搜索模式下,一些目录类搜索引擎首先返回的是自己目录中匹配的网站,如国内搜狐、新浪、网易等;而另外一些则默认的是网页搜索,如Yahoo。

搜索引擎工作原理

搜索引擎工作原理 在搜索引擎的后台,有一些收集网页信息的程序。收集到的信息一般是能够表明网站内容的关键词或短语。然后,信息的索引存储在数据库中。 搜索引擎的系统架构和操作模式吸收了信息检索系统设计中的许多宝贵经验,并根据万维网数据和用户的特点进行了许多修改。其核心文档处理和查询处理的过程基本上是类似传统信息检索系统的工作原理,但它处理的数据对象的复杂特征,也就是说,万维网数据,确定搜索引擎系统必须调整其系统结构,以满足数据处理和用户查询的需求搜索引擎的基本工作原理包括如下三个过程:首先在互联网中发现、搜集网页信息;同时对信息进行提取和组织建立索引库;再由检索器根据用户输入的查询关键字,在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并将查询结果返回给用户。 3、1、抓取网页。每个独立的搜索引擎都有自己的网页抓取程序爬虫(spider)。爬虫Spider顺着网页中的超链接,从这个网站爬到另一个网站,通过超链接分析连续访问抓取更多网页。被抓取的网页被称之为网页快照。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。 4、2、处理网页。搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引库和索引。其他还包括去除重复网页、分词(中文)、判断网页类型、分

析超链接、计算网页的重要度/丰富度等。 5、提供检索服务。用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。 在搜索引擎分类部分我们提到过全文搜索引擎从网站提取信息建立网页数据库的概念。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。 另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。由于搜索引擎索引规则发生了很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,因此目前最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。 当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,出现的位置、频次,链接质量等——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。

百度搜索引擎工作原理

以及其他信息。 搜索引擎基本工作原理

与全文搜索引擎相比,目录索引有许多不同之处。 首先,搜索引擎属于自动网站检索,而目录索引则完全依赖手工操作。用户提交网站后,目录编辑人员会亲自浏览你的网站,然后根据一套自定的评判标准甚至编辑人员的主观印象,决定是否接纳你的网站。 其次,搜索引擎收录网站时,只要网站本身没有违反有关的规则,一般都能登录成功。而目录索引对网站的要求则高得多,有时即使登录多次也不一定成功。尤其象Yahoo!这样的超级索引,登录更是困难。 此外,在登录搜索引擎时,我们一般不用考虑网站的分类问题,而登录目录索引时则必须将网站放在一个最合适的目录(Directory)。 最后,搜索引擎中各网站的有关信息都是从用户网页中自动提取的,所以用户的角度看,我们拥有更多的自主权;而目录索引则要求必须手工另外填写网站信息,而且还有各种各样的限制。更有甚者,如果工作人员认为你提交网站的目录、网站信息不合适,他可以随时对其进行调整,当然事先是不会和你商量的。 目录索引,顾名思义就是将网站分门别类地存放在相应的目录中,因此用户在查询信息时,可选择关键词搜索,也可按分类目录逐层查找。如以关键词搜索,返回的结果跟搜索引擎一样,也是根据信息关联程度排列网站,只不过其中人为因素要多一些。如果按分层目录查找,某一目录中网站的排名则是由标题字母的先后顺序决定(也有例外)。 目前,搜索引擎与目录索引有相互融合渗透的趋势。原来一些纯粹的全文搜索引擎现在也提供目录搜索,如Google就借用Open Directory目录提供分类查询。而象Yahoo! 这些老牌目录索引则通过与Google等搜索引擎合作扩大搜索范围(注),在默认搜索模式下,一些目录类搜索引擎首先返回的是自己目录中匹配的网站,如国内搜狐、新浪、网易等;而另外一些则默认的是网页搜索,如Yahoo。 新竞争力通过对搜索引擎营销的规律深入研究认为:搜索引擎推广是基于网站内容的推广——这就是搜索引擎营销的核心思想。这句话说起来很简单,如果仔细分析会发现,这句话的确包含了搜索引擎推广的一般规律。本文作者在“网站推广策略之内容推广思想漫谈”一文中提出一个观点:“网站内容不仅是大型ICP网站的生命源泉,对于企业网站网络营销的效果同样是至关重要的”。因为网站内容本身也是一种有效的网站推广手段,只是这种推广需要借助于搜索引擎这个信息检索工具,因此网站内容推广策略实际上也就是搜索引擎推广策略的具体应用。 百度谷歌 编辑 查询处理以及分词技术 随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为技术人员,会把有代表性的搜索引擎作为研究对象。搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。

百度搜索引擎工作原理

第二讲:百度搜索引擎及工作原理 一、百度搜索引擎及工作原理? 1、抓取: 搜索引擎蜘蛛又叫爬虫或机器人,是一套信息抓取的程序,百度蜘蛛是通过网络上链接来爬取、搜集网页上的内容信息。 分为深度抓取和广度抓取,怎么让蜘蛛来抓取呢?一般有三种途径:外链、主动提交链接、蜘蛛自己来。我们可以通过服务器日志及百度站长平台抓取频率来判断蜘蛛是否来抓取网页了。在抓取的过程当中影响蜘蛛抓取的因素有路径(过长、中文)以及服务器打开速度。 2、过滤: 通过过滤系统将一些低质量的垃圾内容过滤掉,比如说复制来的,采集来的,主题内容不相关的无价值内容,不够丰富的内容(内容是否为高质量、稀缺性内容)通通过滤掉。 另外,对于一些无法识别的:js、没有添加alt属性的图片、视频上下方没有加加文字说明的、flash、iframe框架结构、登录页面都会过滤掉。 3、收录:

将通过过滤模块的页面储存在索引库里,我们称之为收录。 怎么查询呢?直接在搜索框内输入网址即可查询是否被收录了,查询整个网站收录量用到site指令:site+域名 收录了并不一定有排名,它是网页参与排名的前提条件并非充分条件。只有网站单个页面权重提升了整个网站权重才会更高更强大。 搜索引擎对网站的信任度非常重要,是一个长期积累过程,最终可以达到一个秒收的程度。 4、排序: 通过百度算法系统进行评分,来计算页面的综合得分情况进行排序,最后展现在搜索引擎的搜索结果页中。 因此,我们必须研究搜索引擎排名机制和影响页面排名的因素有哪些。 二、你知道网站不收录的原因有哪些? 1、有没有通知蜘蛛来或对蜘蛛有没有进行封禁 2、页面内容质量低 3、排名周期(观察期) 4、网页内容是否能够被蜘蛛识别

搜索引擎的工作原理

搜索引擎到工作原理 第一节搜索引擎的定义和功能构成 所谓“搜索引擎”,说到底是一个计算机应用软件系统,或者说是一个网络应用软件系统。从网络用户的角度看,它根据用户提交的类自然语言查询词或者短语,返回一系列很可能与该查询相关的网页信息,供用户进一步判断和选取。为了有效地做到这一点,它大致上被分成三个功能模块,或者三个子系统:即网页搜集,预处理和查询服务。 应该指出,在实践中这三个部分是相对独立的,它们的工作形成了搜索引擎工作的三个阶段,通常分别由人工启动。同时我们注意到,在早期的搜索引擎中,系统处理的网页数量少,预处理部分的工作比较简单,只是涉及到汉语的分词(英文还没有这个问题)和建索引,因此也有将分词合并到网页搜集过程中,将建索引归到查询服务子系统中,从而整个系统看起来只有两个模块的安排。 图片一:搜索引擎三段式工作原理模式图 第二节、网页搜集 搜索引擎这样一个软件系统应该是何种工作方式?如果说软件系统是工作在某还是即时。我们都有经验,在网络比较畅通的引擎服务的基础应该是一批预先搜集好的网页个数据集合上的程序的话,这个软件系统操作的数据不仅包括内容不可预测的用户查询,还要包括在数量上动态变化的海量网页,并且这些网页不会主动送到系统来,而是需要由系统去抓取。 首先,我们考虑抓取的时机:事先情况下,从网上下载一篇网页大约需要1秒钟左右,因此如果在用户查询的时候即时去网上抓来成千上万的网页,一个个分析处理,和用户的查询匹配,不可能满足搜索引擎的响应时间要求。不仅如此,这样做的系统效益也不高(会重

复抓取太多的网页);面对大量的用户查询,不可能想象每来一个查询,系统就到网上“搜索”一次。 因此我们看到,大规模引擎服务的基础应该是一批预先搜集好的网页(直接或者间接1)。这一批网页如何维护?可以有两种基本的考虑。 定期搜集,每次搜集替换上一次的内容,我们称之为“批量搜集”。由于每次都是重新来一次,对于大规模搜索引擎来说,每次搜集的时间通常会花几周。而由于这样做开销大,较通常两次搜集的间隔时间也不会很短(例如早期天网的版本大约每3个月来一次,Google在一段时间曾是每隔28天来一次)。这样做的好处是系统实现比较简单,主要缺点“是时新性”(freshness)不高,还有重复搜集所带来的额外带宽的消耗。 增量搜集,开始时搜集一批,往后只是(1)搜集新出现的网页,(2)搜集那些在上次 搜集后有过改变的网页,(3)发现自从上次搜集后已经不再存在了的网页,并从库中删除。由于除新闻网站外,许多网页的内容变化并不是很经常的(有研究指出50%网页的平均生 命周期大约为50天,这样做每次搜集的网页量不会很大(例如我们在2003年初估计中 国每天有30-50万变化了的网页),于是可以经常启动搜集过程(例如每天)。30万网页,一台PC机,在一般的网络条件下,半天也就搜集完了。这样的系统表现出来的信息时 新性就会比较高,主要缺点是系统实现比较复杂;这种复杂还不仅在于搜集过程,而是还 在于下面要谈到的建索引的过程。 上面讲的是系统网页数据库维护的基本策略。在这两种极端的情况之间也可能有一些折中的方案,J. Cho博士在这方面做过深入的研究[Cho and Garcia-Molina,2000],[Cho,2002], 根据一种网页变化模型和系统所含内容时新性的定义,提出了相应优化的网页搜集策略。其 中一个有趣的结论是:在系统搜集能力一定的情况下,若有两类网页(例如“商业”和“教育”),它们的更新周期差别很大(例如“商业”类网页平均更新周期是“天”,而“教育”类 网页平均更新周期是“月”),则系统应该将注意力放在更新慢的网页上[Cho and Garcia-Molina,2000],以使系统整体的时新性达到比较高的取值。 在具体搜集过程中,如何抓取一篇篇的网页,也可以有不同的考虑。最常见的一种是所 谓“爬取”:将Web上的网页集合看成是一个有向图,搜集过程从给定起始URL集合S (或者说“种子”)开始,沿着网页中的链接,按照先深、先宽、或者某种别的策略遍历,不 停的从S中移除URL,下载相应的网页,解析出网页中的超链接URL,看是否已经被访 问过,将未访问过的那些URL加入集合S。整个过程可以形象地想象为一个蜘蛛(spider)在蜘蛛网(Web)上爬行(crawl)。后面我们会看到,真正的系统其实是 多“个蜘蛛”同时在爬。 这种方式的好处除了概念很漂亮,一般实现起来也不困难外,还有很重要的一条是容易通过一定的策略,使搜集到的网页相对比较“重要”。前面提过,任何搜索引擎是不可能将Web 上的网页搜集完全的,通常都是在其他条件的限制下决定搜集过程的结束(例如磁盘满,或者搜集时间已经太长了)。因此就有一个尽量使搜到的网页比较重要的问题,这对于那些并不追求很大的数量覆盖率的搜索引擎特别重要。研究表明,按照先宽搜索方式得到的网页集合要比先深搜索得到的集合重要(这里当然有一个重要性的指标问题)。这种方式的一个困难是要从每一篇网页中提取出所含的URL。由于HTML的灵活性,其中出现URL的方式各种各样,将这个环节做得彻底不容易(例如我们现在还没有很好的简单办法从JavaScript 脚本中提取URL)。同时,由于Web 的“蝴蝶结”形状,这种方式搜集到的网页不大会超过所有目标网页数量2的2/3。 另外一种可能的方式是在第一次全面网页搜集后,系统维护相应的URL集合S,往 后的搜集直接基于这个集合。每搜到一个网页,如果它发生变化并含有新的URL,则将它们 对应的网页也抓回来,并将这些新URL也放到集合S中;如果S中某个url对应的

搜索引擎工作的基础流程与原理

参数,然后对相应站点进行抓取。 在这里,我要说明一下,就是针对百度来说,site的数值并非是蜘蛛已抓取你页面的数值。比 如site:https://www.doczj.com/doc/1711144746.html,,所得出的数值并不是大家常说的百度收录数值,想查询具体的百度收录量应该在百度提供的站长工具里查询索引数量。那么site是什么?这个我会在今后的文章中为大家讲解。 那么蜘蛛如何发现新链接呢?其依靠的就是超链接。我们可以把所有的互联网看成一个有向集合的聚集体,蜘蛛由起始的URL集合A沿着网页中超链接开始不停的发现新页面。在这个过程中,每发现新的URL都会与集合A中已存的进行比对,若是新的URL,则加入集合A中,若是已在集合A中存在,则丢弃掉。蜘蛛对一个站点的遍历抓取策略分为两种,一种是深度优先,另一种就是宽度优先。但是如果是百度这类商业搜索引擎,其遍历策略则可能是某种更加复杂的规则,例如涉及到域名本身的权重系数、涉及到百度本身服务器矩阵分布等。 二.预处理。 预处理是搜索引擎最复杂的部分,基本上大部分排名算法都是在预处理这个环节生效。那么搜索引擎在预处理这个环节,针对数据主要进行以下几步处理: 1.提取关键词。 蜘蛛抓取到的页面与我们在浏览器中查看的源码是一样的,通常代码杂乱无章,而且其中还有很多与页面主要内容是无关的。由此,搜索引擎需要做三件事情:代码去噪。去除掉网页中所有的代码,仅剩下文本文字。②去除非正文关键词。例如页面上的导航栏以及其它不同页面共享的公共区域的关键词。③去除停用词。停用词是指没有具体意义的词汇,例如“的”“在”等。 当搜索引擎得到这篇网页的关键词后,会用自身的分词系统,将此文分成一个分词列表,然后储存在数据库中,并与此文的URL进行一一对应。下面我举例说明。 假如蜘蛛爬取的页面的URL是https://www.doczj.com/doc/1711144746.html,/2.html,而搜索引擎在此页面经过上述操作后提取到的关键词集合为p,且p是由关键词p1,p2,……,pn组成,则在百度数据库中,其相互间的关系是一一对应,如下图。

搜索引擎介绍

搜索引擎原理 搜索引擎,通常指的是收集了因特网上几千万到几十亿个网页并对网页中的每一个词(即关键词)进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。在经过复杂的算法进行排序后,这些结果将按照与搜索关键词的相关度高低,依次排列。根据自己的优化程度,获得相应的名次。 1.原理概述 在搜索引擎的后台,有一些用于搜集网页信息的程序。所收集的信息一般是能表明网站内容(包括网页本身、网页的URL地址、构成网页的代码以及进出网页的连接)的关键词或者短语。接着将这些信息的索引存放到数据库中。 搜索引擎的系统架构和运行方式吸收了信息检索系统设计中许多有价值的经验,也针对万维网数据和用户的特点进行了许多修改,如

右图所示的搜索引擎系统架构。其核心的文档处理和查询处理过程与传统信息检索系统的运行原理基本类似,但其所处理的数据对象即万维网数据的繁杂特性决定了搜索引擎系统必须进行系统结构的调整,以适应处理数据和用户查询的需要。[1-2] 2.工作原理 爬行和抓取 搜索引擎派出一个能够在网上发现新网页并抓文件的程序,这个程序通常称之为蜘蛛(Spider)。搜索引擎从已知的数据库出发,就像正常用户的浏览器一样访问这些网页并抓取文件。搜索引擎通过这些爬虫去爬互联网上的外链,从这个网站爬到另一个网站,去跟踪网页中的链接,访问更多的网页,这个过程就叫爬行。这些新的网址会被存入数据库等待搜索。所以跟踪网页链接是搜索引擎蜘蛛(Spider)发现新网址的最基本的方法,所以反向链接成为搜索引擎优化的最基本因素之一。搜索引擎抓取的页面文件与用户浏览器得到的完全一样,抓取的文件存入数据库。 建立索引 蜘蛛抓取的页面文件分解、分析,并以巨大表格的形式存入数据库,这个过程即是索引(index).在索引数据库中,网页文字内容,关

六大搜索引擎的比较

一、界面、广告以及速度搜索引擎在我们日常操作中的使用频率非常高,大家使用它的目的都非常明确,就是用它来搜寻需要的内容,而不会为搜索引擎的页面做过多的停留,因此搜索引擎的界面设计和速度就对我们的使用产生不小的影响,下面来看看这六款搜索引擎在界面和速度上的表现。谷歌、百度和微软的Live Search,这三大搜索引擎的界面大家都已经相当熟悉,它们有着共同的特点,就是简洁至极:网站LOGO、搜索框和按钮以及个别功能服务链接,除此以外,页面上就没有其他多余和花哨的东西了,给人的感觉非常清爽,界面一目了然,特别是Live Search在不失简洁的同时还通过一些小脚本和背景图片使得页面整体更加美观。三者使用起来都很方便,并且首页界面上没有任何第三方的广告。搜索结果页面,三者同样是采用简洁的风格,页面左侧排列着搜索结果,百度搜索结果页面右侧有不少广告,谷歌视关键词的不同也可能出现右侧广告。 Live Search的界面十分简洁且美观 百度搜索结果页面右侧的广告与上面三者相比,雅虎全能搜在界面上显得更为活泼、色彩更加多样,并且在首页内容上也更丰富。首页上除了常规的搜索所需组成部分外,雅虎全能搜还加入了天气预报、邮箱登录的显示区域。虽然这些占据了一点点页面,但是它们功能实用且不影响正常使用。雅虎全能搜的搜索主页 搜狗搜索的界面可谓结合了谷歌和Live Search:在布局上

与谷歌类似,而在细节上与Live Search有着异曲同工之妙;而搜索新军——网易有道的界面与谷歌、百度站在同一阵线,风格、版式都十分一致。在搜索结果页面中,搜狗搜索页面左侧有少量广告。总的来说,六款搜索引擎的界面设计都比较合理、美观、大方。雅虎全能搜的界面稍有不同,加入了天气预报和邮箱模块,而其他五款都尽量精简,其中谷歌、百度和有道趋于一致,采用最简的风格,而Live Search和搜狗在首页的一些细节上多加以了一些修饰。此外,值得一提的是一些搜索引擎对于Logo文化的重视,在传统的节日或者一些特殊的纪念日时都会将首页的Logo徽标换成与该日子相关的设计。其中在这方面要数谷歌和百度做得最为出色:无论是三八节、五一节这样的国际节日,或者情人节、万圣节这样的西方舶来物,还是春节、清明、端午等传统的中国农历节日,谷歌和百度都会精心设计相应的节日Logo;此外,谷歌在一些特殊的纪念日,如达芬奇诞辰、地球日之类的纪念日也会推出专门的徽标;而百度近期开始定期在首页推出一个搜索封面人物,以此反映对互联网时代风云人物的价值取向,十分有特色。雅虎和搜狗在节日Logo设计方面也有所表现,在节日时也可经常看到其专门的徽标;网易有道正式版新近推出不久,我们还无法对其在特殊Logo的设计上是否会有所表现作出评价。搜索引擎的特色Logo其实并不仅仅是一个单纯的设计,它还有更多的作用:它承载了一种信息,传达了搜索引擎提供商对于创新、

王乃成信息检索工具的工作原理

课题:信息检索工具的工作原理 课型:新授课 课时:1 课时 教学目标: 1.了解常用的英特网信息检索工具类型;能描述信息检索工具的基本工作原理和特点。 2.体验因特网信息检索工具的优缺点。 3. 掌握常用因特网信息检索工具的使用方法,能熟练使用信息检索工具获取所需信息。 内容分析: 本节为“因特网信息资源检索”中的重点部分,介绍了全文和目录索引类搜索引擎的工作原理,这是学习的重点。教材中通过搜索奥运信息的例子来说明在网上检索信息的过程, 以达到简化原理、帮助学生理解的目的。教学中应尽量选取贴近生活的例子来说明复杂的工 作原理,降低难度,以提高学生的检索能力为最终目的。 教学过程: 1.情境引入 已搜索一首歌曲为基础,提出问题:同学们想像一下信息检索工具该如何工作呢?有几种方法能达到,让学生们互相讨论,并展开对比讨论,选出最恰当的方法。 2.教学过程 方法一:全文搜索引擎的工作原理 (1)提出问题 ①去超市购买一枝钢笔的过程。 购物→描述商品特征→取货→交给顾客 ②利用全文搜索引擎查找夏季奥运会的由来,并观察操作的一般过程。如图 1-1 ~ 1-3 所示。 图 1-1 百度检索首页

图 1-2 百度检索结果页面 图 1-3 百度检索答案举例页面 总结 全文搜索引擎检索信息的过程: 搜索关键字或词→数据库中检索→搜索结果。 (2)通过上述范例引申 从专业的角度拓展给学生讲解搜索引擎的组成。 ①搜索器:负责定期地自动到各个网站上,把网页抓下来,并顺着上面的链接,持 续不断地抓取网页。 ②索引器:把搜索器抓来的网页进行分析,按照关键词句进行索引,并存入服务器 的数据库中。 ③检索器:面向用户,接收用户提交的查询字串,在索引数据库中查询,并将结果 反馈给用户。 巩固练习:搜索江苏省2012年高考方案 进一步总结,得出全文搜索引擎的工作包括三个过程。 ①搜索器在因特网中发现、搜集网页信息。 ②索引器对所搜集的信息进行提取和组织,并建立索引库。 ③由检索器根据用户输入的查询关键词,在索引库中快速检出相关文档,进行文档与查询内容的相关比较,对检出的结果进行排序,并将查询结果返回给用户。 方法二:目录索引类搜索引擎的基本工作原理 (1)提出问题 ①如果去学校图书馆借阅“短篇小说集”,该怎么去做,描述一般过程。 借阅图书→找书目→找相应书籍→从书架拿出 ②利用目录类搜索引擎查找“北京大学”的信息,如图 1-4 ~ 1-7所示。

搜索引擎工作原理

一、搜索引擎引题 搜索引擎是什么? 这里有个概念需要提一下。信息检索(Information Retrieval 简称IR) 和搜索(Search) 是有区别的,信息检索是一门学科,研究信息的获取、表示、存储、组织和访问,而搜索只是信息检索的一个分支,其他的如问答系统、信息抽取、信息过滤也可以是信息检索。 本文要讲的搜索引擎,是通常意义上的全文搜索引擎、垂直搜索引擎的普遍原理,比如Google、Baidu,天猫搜索商品、口碑搜索美食、飞猪搜索酒店等。 Lucene 是非常出名且高效的全文检索工具包,ES 和Solr 底层都是使用的Lucene,本文的大部分原理和算法都会以Lucene 来举例介绍。 为什么需要搜索引擎? 看一个实际的例子:如何从一个亿级数据的商品表里,寻找名字含“秋裤”的商品。 使用SQL Like select * from item where name like '%秋裤%' 如上,大家第一能想到的实现是用like,但这无法使用上索引,会在大量数据集上做一次遍历操作,查询会非常的慢。有没有更简单的方法呢,可能会说能不能加个秋裤的分类或者标签,很好,那如果新增一个商品品类怎么办呢?要加无数个分类和标签吗?如何能更简单高效的处理全文检索呢?

使用搜索引擎 答案是搜索,会事先build 一个倒排索引,通过词法语法分析、分词、构建词典、构建倒排表、压缩优化等操作构建一个索引,查询时通过词典能快速拿到结果。这既能解决全文检索的问题,又能解决了SQL查询速度慢的问题。 那么,淘宝是如何在1毫秒从上亿个商品找到上千种秋裤的呢,谷歌如何在1毫秒从万亿个网页中找寻到与你关键字匹配的几十万个网页,如此大的数据量是怎么做到毫秒返回的。 二、搜索引擎是怎么做的? Part1. 分词 分词就是对一段文本,通过规则或者算法分出多个词,每个词作为搜索的最细粒度一个个单字或者单词。只有分词后有这个词,搜索才能搜到,分词的正确性非常重要。分词粒度太大,搜索召回率就会偏低,分词粒度太小,准确率就会降低。如何恰到好处的分词,是搜索引擎需要做的第一步。 正确性&粒度 分词正确性 “他说的确实在理”,这句话如何分词? “他-说-的确-实在-理”[错误语义] “他-说-的-确实-在理”[正确语义] 分词的粒度 “中华人民共和国宪法”,这句话如何分词?

搜索引擎分类及工作原理

搜索引擎的分类及工作原理 姓名:XXX 班级:XXX 摘要:这篇论文是关于搜索引擎的分类及原理的分析。在浩瀚的网络资源中,搜索引擎(Search Engine)是一种网上信息检索工具,它能帮助用户迅速而全面地找到所需要的信息。它是一个集中了千千万万个站点的地方,主要功能是给人们搜索这些站点。它还会分门别类的把一些好的站点列出来,以方便人们查找资料,有了搜索引擎你就能很容易的找到你想要的内容或站点,因此掌握好使用搜索引擎对于任何上网的用户至关重要。一个好的搜索引擎,不仅数据库容量要大,更新频率、检索速度要快,支持对多语言的搜索,而且随着数据库容量的不断膨胀,还要能从庞大的资料库中精确地找到正确的资料。 关键词:搜索引擎工作原理分类蜘蛛搜集网站 1.前言 获得网站网页资料,能够建立数据库并提供查询的系统,我们都可以把它叫做搜索引擎。搜索引擎并不真正搜索互联网,它搜索的实际上是预先整理好的网页索引数据库。真正意义上的搜索引擎,通常指的是收集了因特网上几千万到几十亿个网页并对网页中的每一个词(即关键词)进行索引,建立索引数据库的全文搜索引擎。 当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。在经过复杂的算法进行排序后,这些结果将按照与搜索关键词的相关度高低,依次排列。 2.搜索引擎分类 搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search Index/Directory)和元搜索引擎(Meta Search Engine)。 2.1全文搜索引擎 全文搜索引擎是从网站提取信息建立网页数据库。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间搜索引擎主动派出“蜘蛛”程

搜索引擎分类及工作原理修订稿

搜索引擎分类及工作原 理 WEIHUA system office room 【WEIHUA 16H-WEIHUA WEIHUA8Q8-

搜索引擎的分类及工作原理 姓名:XXX 班级:XXX 摘要:这篇论文是关于搜索引擎的分类及原理的分析。在浩瀚的网络资源中,搜索引擎(Search Engine)是一种网上信息检索工具,它能帮助用户迅速而全面地找到所需要的信息。它是一个集中了千千万万个站点的地方,主要功能是给人们搜索这些站点。它还会分门别类的把一些好的站点列出来,以方便人们查找资料,有了搜索引擎你就能很容易的找到你想要的内容或站点,因此掌握好使用搜索引擎对于任何上网的用户至关重要。一个好的搜索引擎,不仅数据库容量要大,更新频率、检索速度要快,支持对多语言的搜索,而且随着数据库容量的不断膨胀,还要能从庞大的资料库中精确地找到正确的资料。 关键词:搜索引擎工作原理分类蜘蛛搜集网站 1.前言 获得网站网页资料,能够建立数据库并提供查询的系统,我们都可以把它叫做搜索引擎。搜索引擎并不真正搜索互联网,它搜索的实际上是预先整理好的网页索引数据库。真正意义上的搜索引擎,通常指的是收集了因特网上几千万到几十亿个网页并对网页中的每一个词(即关键词)进行索引,建立索引数据库的全文搜索引擎。 当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。在经过复杂的算法进行排序后,这些结果将按照与搜索关键词的相关度高低,依次排列。 2.搜索引擎分类

搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search Index/Directory)和元搜索引擎(Meta Search Engine)。 全文搜索引擎 全文搜索引擎是从网站提取信息建立网页数据库。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。 另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。由于近年来搜索引擎索引规则发生了很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,因此目前最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。 当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,出现的位置/频次,链接质量等——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。 目录索引 首先,搜索引擎属于自动网站检索,而目录索引则完全依赖手工操作。用户提交网站后,目录编辑人员会亲自浏览你的网站,然后根据一套自定的评判标准甚至编辑人员的主观印象,决定是否接纳你的网站。

搜索引擎的工作原理大致可以分为

搜索引擎的工作原理大致可以分为: 1、搜集信息:搜索引擎的信息搜集基本都是自动的。搜索引擎利用称为网络蜘蛛(spider)的自动搜索机器人程序来连上每一个网页上的超连结。机器人程序根据网页链到其他中的超链接,就象日常生活中所说的“一传十,十传百……”一样,从少数几个网页开始,连到数据库上所有到其他网页的链接。理论上,若网页上有适当的超连结,机器人便可以遍历绝大部分网页。 2、整理信息:搜索引擎整理信息的过程称为“建立索引”。搜索引擎不仅要保存搜集起来的信息,还要将它们按照一定的规则进行编排。这样,搜索引擎根本不用重新翻查它所有保存的信息而迅速找到所要的资料。想象一下,如果信息是不按任何规则地随意堆放在搜索引擎的数据库中,那么它每次找资料都得把整个资料库完全翻查一遍,如此一来再快的计算机系统也没有用。 3、接受查询:用户向搜索引擎发出查询,搜索引擎接受查询并向用户返回资料。搜索引擎每时每刻都要接到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的资料,并返回给用户。目前,搜索引擎返回主要是以网页链接的形式提供的,这些通过这些链接,用户便能到达含有自己所需资料的网页。通常搜索引擎会在这些链接下提供一小段来自这些网页的摘要信息以帮助用户判断此网页是否含有自己需要的内容。 以上是在百度搜索的结果。 下面谈一下我个人对FTP搜索的见解。 首先是第一步,搜集信息。每隔一段时间,派出“蜘蛛”程序。(我想这里的蜘蛛程序跟网页搜索引擎的“蜘蛛”程序是有所区别的。网页搜索引擎的“蜘蛛”程序是指自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,不断重复这过程,并把爬过的所有网页收集回来的程序。而这里的“蜘蛛”程序,我猜是在某一个时刻,利用文件系统方面的类方法,自动历遍所有的已知的校内FTP站点的文件夹,然后把每一个文件的名字、大小、类型、地址、路径等相关信息收集回来的程序。) 第二步,整理信息。“蜘蛛”程序搜集回来的信息,输入数据库,这样的话,用户要查询的文件可以很快地得出,并且用户可以不必按照文件的名字来查询,以类型、大小等查询也是可以的,同时在给出查询结果的时候,可以按照大小、日期等来排序。 第三步,接受查询。用户登陆一个门户网站,就像北大天网那样,在搜索框里填入关键词,查询的类型,是否模糊查找等,这个页面就可以会把表单的内容传到服务器上、查询数据库,然后返回查询结果。还有支持用链接的方式,点击分类,然后可以浏览这个方面的信息,如下载排行、推荐下载等。 关于疑问方面,就是那个PNG图的构架不是很清楚,sniffer跟spider是什么关系呢? 还有一个就是ipv6的问题,人大内不是有个ipv6的ftp吗?查询结果要标注是ipv6吗?

搜索引擎工作原理三个阶段简介

SEO实战密码:搜索引擎工作原理三个阶段简介 搜索引擎工作过程非常复杂,接下来的几节我们简单介绍搜索引擎是怎样实现网页排名的。这里介绍的内容相对于真正的搜索引擎技术来说只是皮毛,不过对SEO人员已经足够用了。 搜索引擎的工作过程大体上可以分成三个阶段。 (1)爬行和抓取:搜索引擎蜘蛛通过跟踪链接访问网页,获得页面HTML代码存入数据库。 (2)预处理:索引程序对抓取来的页面数据进行文字提取、中文分词、索引等处理,以备排名程序调用。 (3)排名:用户输入关键词后,排名程序调用索引库数据,计算相关性,然后按一定格式生成搜索结果页面。 爬行和抓取 爬行和抓取是搜索引擎工作的第一步,完成数据收集的任务。 1.蜘蛛 搜索引擎用来爬行和访问页面的程序被称为蜘蛛(spider),也称为机器人(bot)。 搜索引擎蜘蛛访问网站页面时类似于普通用户使用的浏览器。蜘蛛程序发出页面访问请求后,服务器返回HTML代码,蜘蛛程序把收到的代码存入原始页面数据库。搜索引擎为了提高爬行和抓取速度,都使用多个蜘蛛并发分布爬行。 蜘蛛访问任何一个网站时,都会先访问网站根目录下的robots.txt文件。如果robots.txt文件禁止搜索引擎抓取某些文件或目录,蜘蛛将遵守协议,不抓取被禁止的网址。 和浏览器一样,搜索引擎蜘蛛也有标明自己身份的代理名称,站长可以在日志文件中看到搜索引擎的特定代理名称,从而辨识搜索引擎蜘蛛。下面列出常见的搜索引擎蜘蛛名称:· Baiduspider+(+https://www.doczj.com/doc/1711144746.html,/search/spider.htm)百度蜘蛛 · Mozilla/5.0 (compatible; Yahoo! Slurp China; https://www.doczj.com/doc/1711144746.html,/help.html)雅虎中国蜘蛛 · Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; https://www.doczj.com/doc/1711144746.html,/help/us/ysearch/slurp)英文雅虎蜘蛛 · Mozilla/5.0 (compatible; Googlebot/2.1; +https://www.doczj.com/doc/1711144746.html,/bot.html)Google蜘蛛 · msnbot/1.1 (+https://www.doczj.com/doc/1711144746.html,/msnbot.htm)微软 Bing蜘蛛 · Sogou+web+robot+(+https://www.doczj.com/doc/1711144746.html,/docs/help/webmasters.htm#07)搜狗蜘蛛 · Sosospider+(+https://www.doczj.com/doc/1711144746.html,/webspider.htm)搜搜蜘蛛 · Mozilla/5.0 (compatible; YodaoBot/1.0;

相关主题
文本预览
相关文档 最新文档