一 : 什么是购物搜索引擎?
购物搜索引擎可以理解为搜索引擎的一种细分,即在网上购物领域的专业搜索引擎。购物搜索引擎是从比较购物网站发展起来的,比较购物最初的设想,是为消费者提供从多种在线零售网站中进行商品价格、网站信誉、购物方便性等方面的比较资料,随着比较购物网站的发展,其作用不仅表现在为在线消费者提供方便,也为在线销售上推广产品提供了机会,实际上也就等类似于一个搜索引擎的作用了,并且处于网上购物的需要,从比较购物网站获得的搜索结果比通用搜索引擎获得的信息更加集中,信息也更全面(如有些比较购物网站除了产品价值信息之外,还包含了包含对在线销售商的评价等),于是比较购物网站也就逐渐演变为购物搜索引擎。二 : 什么是模板引擎36
什么是模版引擎
不知道从什么时候开始,有人开始对?HTML?内嵌入?Server?Script?觉得不太满意。然而不论是微软的?ASP?或是开放源码的?PHP,都是属于内嵌?Server?Script?的网页伺服端语言。因此也就有人想到,如果能把程序应用逻辑?(或称商业应用逻辑)?与网页呈现?(Layout)?逻辑分离的话,是不是会比较好呢?
其实这个问题早就存在已久,从交互式网页开始风行时,不论是?ASP?或是?PHP?的使用者都是身兼程序开发者与视觉设计师两种身份。可是通常这些使用者不是程序强就是美工强,如果要两者同时兼顾,那可得死掉不少脑细胞...
所以模版引擎就应运而生啦!模版引擎的目的,就是要达到上述提到的逻辑分离的功能。它能让程序开发者专注于资料的控制或是功能的达成;而视觉设计师则可专注于网页排版,让网页看起来更具有专业感!因此模版引擎很适合公司的网站开发团队使用,使每个人都能发挥其专长!
就笔者接触过的模版引擎来说,依资料呈现方式大概分成:需搭配程序处理的模版引擎和完全由模版本身自行决定的模版引擎两种形式。
在需搭配程序处理的模版引擎中,程序开发者必须要负责变量的呈现逻辑,也就是说他必须把变量的内容在输出到模版前先处理好,才能做?assign?的工作。换句话说,程序开发者还是得多写一些程序来决定变量呈现的风貌。而完全由模版本身自行决定的模版引擎,它允许变量直接?assign?到模版中,让视觉设计师在设计模版时再决定变量要如何呈现。因此它就可能会有另一套属于自己的模版程序语法?(如?Smarty)?,以方便控制变量的呈现。但这样一来,视觉设计师也得学习如何使用模版语言。
模版引擎的运作原理,首先我们先看看以下的运行图:
一般的模版引擎?(如?PHPLib)?都是在建立模版对象时取得要解析的模版,然后把变量套入后,透过?parse()?这个方法来解析模版,最后再将网页输出。
对?Smarty?的使用者来说,程序里也不需要做任何?parse?的动作了,这些?Smarty?自动会帮我们做。而且已经编译过的网页,如果模版没有变动的话,?Smarty?就自动跳过编译的动作,直接执行编译过的网页,以节省编译的时间。
使用Smarty的一些概念
在一般模版引擎中,我们常看到区域的观念,所谓区块大概都会长成这样:
<!--?START?:?Block?name?-->
区域内容
<!--?END?:?Block?name?-->
这些区块大部份都会在?PHP?程序中以?if?或?for,?while?来控制它们的显示状态,虽然模版看起来简洁多了,但只要一换了显示方式不同的模版,?PHP?程序势必要再改一次!
在?Smarty?中,一切以变量为主,所有的呈现逻辑都让模版自行控制。因为?Smarty?会有自己的模版语言,所以不管是区块是否要显示还是要重复,都是用?Smarty?的模版语法?(if,?foreach,?section)?搭配变量内容作呈现。这样一来感觉上好象模版变得有点复杂,但好处是只要规划得当,?PHP?程序一行都不必改。
由上面的说明,我们可以知道使用Smarty?要掌握一个原则:将程序应用逻辑与网页呈现逻辑明确地分离。就是说?PHP?程序里不要有太多的?HTML?码。程序中只要决定好那些变量要塞到模版里,让模版自己决定该如何呈现这些变量?(甚至不出现也行)?。
Smarty的基础
安装Smarty
首先,我们先决定程序放置的位置。
Windows下可能会类似这样的位置:「?d:\appserv\web\demo\?」。
Linux下可能会类似这样的位置:「?/home/jaceju/public_html/?」。
到Smarty的官方网站下载最新的Smarty套件::(扩展名叫什么都无所谓,但便于视觉设计师开发,笔者都还是以?.htm?为主。)
templates/test.htm:
<html>?
<head>?
<meta?@#);?
?>?
请打开浏览器,输入?.php:
<?php?/*?Smarty?version?2.6.0,?created?on?2003-12-15?22:19:45?compiled?from?test.htm?*/??>?
<html>?
<head>?
<meta?http-equiv="Content-Type"?content="text/html;?charset=big5">?
<title><?php?echo?$this->_tpl_vars[@#title@#];??\></title>?
</head>?
<body>?
<?php?echo?$this->_tpl_vars[@#content@#];??\>?
</body>?
</html>?
没错,这就是?Smarty?编译过的档案。它将我们在模版中的变量转换成了?PHP?的语法来执行,下次再读取同样的内容时,?Smarty?就会直接抓取这个档案来执行了。
最后我们整理一下整个?Smarty?程序撰写步骤:
Step?1.?加载?Smarty?模版引擎。
Step?2.?建立?Smarty?对象。
Step?3.?设定?Smarty?对象的参数。
Step?4.?在程序中处理变量后,再用?Smarty?的?assign?方法将变量置入模版里。
Step?5.?利用?Smarty?的?display?方法将网页秀出。
如何安排你的程序架构
上面我们看到除了?Smarty?所需要的资料夹外?(class?、?configs?、?templates?、?templates_c)?,还有两个资料夹:?includes?、?modules?。其实这是笔者模仿?XOOPS?的架构所建立出来的,因为?XOOPS?是笔者所接触到的程序中,少数使用?Smarty?模版引擎的架站程序。所谓西瓜偎大边,笔者这样的程序架构虽没有?XOOPS?的百分之一强,但至少给人看时还有?XOOPS?撑腰。
includes?这个资料夹主要是用来放置一些?function?、?sql?檔,这样在?main.php?就可以将它们引入了,如下:
main.php:
<?php?
include?"class/Smarty.class.php";?
define(@#__SITE_ROOT@#,?@#d:/appserv/web/demo@#);?//?最后没有斜线?
//?以?main.php?的位置为基准?
什么是模板引擎36_引擎是什么意思
require_once?"includes/functions.php";?
require_once?"includes/include.php";?
$tpl?=?new?Smarty();?
$tpl->template_dir?=?__SITE_ROOT?.?"/templates/";?
$tpl->compile_dir?=?__SITE_ROOT?.?"/templates_c/";?
$tpl->config_dir?=?__SITE_ROOT?.?"/configs/";?
$tpl->cache_dir?=?__SITE_ROOT?.?"/cache/";?
$tpl->left_delimiter?=?@#<{@#;?
$tpl->right_delimiter?=?@#}>@#;?
?>?
modules?这个资料夹则是用来放置程序模块的,如此一来便不会把程序丢得到处都是,整体架构一目了然。
上面我们也提到?main.php?,这是整个程序的主要核心,不论是常数定义、外部程序加载、共享变量建立等,都是在这里开始的。所以之后的模块都只要将这个档案包含进来就可以啦。因此在程序流程规划期间,就必须好好构思?main.php?中应该要放那些东西;当然利用?include?或?require?指令,把每个环节清楚分离是再好不过了。
在上节提到的?Smarty?程序?5?步骤,?main.php?就会帮我们先将前?3?个步骤做好,后面的模块程序只要做后面两个步骤就可以了。
从变量开始
如何使用变量
从上一章范例中,我们可以清楚地看到我们利用?<{?及?}>?这两个标示符号将变量包起来。预设的标示符号为?{?及?}?,但为了中文冲码及?javascript?的关系,因此笔者还是模仿?XOOPS?,将标示符号换掉。变量的命名方式和?PHP?的变量命名方式是一模一样的,前面也有个?$?字号?(这和一般的模版引擎不同)。标示符号就有点像是?PHP?中的
(事实上它们的确会被替换成这个)?,所以以下的模版变量写法都是可行的:
1.?<{$var}>
2.?<{?$var?}>?<!--?和变量之间有空格?-->
3.?<{$var
}>?<!--?启始的标示符号和结束的标示符号不在同一行?-->
在?Smarty?里,变量预设是全域的,也就是说你只要指定一次就好了。指定两次以上的话,
变量内容会以最后指定的为主。就算我们在主模版中加载了外部的子模版,子模版中同样的变量一样也会被替代,这样我们就不用再针对子模版再做一次解析的动作。
而在?PHP?程序中,我们用?Smarty?的?assign?来将变量置放到模版中。?assign?的用法官方手册中已经写得很多了,用法就如同上一节的范例所示。不过在重复区块时,我们就必须将变量做一些手脚后,才能将变量?assign?到模版中,这在下一章再提。
修饰你的变量
上面我们提到?Smarty?变量呈现的风貌是由模版自行决定的,所以?Smarty?提供了许多修饰变量的函式。使用的方法如下:
<{变量|修饰函式}>?<!--?当修饰函式没有参数时?-->
<{变量|修饰函式:"参数(非必要,视函式而定)"}>?<!--?当修饰函式有参数时?--> 范例如下:
<{$var|nl2br}>?<!--?将变量中的换行字符换成?<br?/>?-->
<{$var|string_format:"%02d"}>?<!--?将变量格式化?-->
好,那为什么要让模版自行决定变量呈现的风貌?先看看底下的?HTML?,这是某个购物车结帐的部份画面。
<input?name="total"?type="hidden"?value="21000"?/>
总金额:21,000?元
一般模版引擎的模版可能会这样写:
<input?name="total"?type="hidden"?value="{total}"?/>
总金额:{format_total}?元
它们的?PHP?程序中要这样写:
<?php?
$total?=?21000;?
$tpl->assign("total",?$total);?
$tpl->assign("format_total",?number_format($total));?
?>?
而?Smarty?的模版就可以这样写:?(number_format?修饰函式请到Smarty?官方网页下载)
<input?name="total"?type="hidden"?value="<{$total}>"?/>
总金额:<{$total|number_format:""}>?元
Smarty?的?PHP?程序中只要这样写:
<?php?
$total?=?21000;?
$tpl->assign("total",?$total);?
?>?
所以在?Smarty?中我们只要指定一次变量,剩下的交给模版自行决定即可。这样了解了吗?这就是让模版自行决定变量呈现风貌的好处!
控制模版的内容
重复的区块
在?Smarty?样板中,我们要重复一个区块有两种方式:?foreach?及?section?。而在程序中我们则要?assign?一个数组,这个数组中可以包含数组数组。就像下面这个例子:
首先我们来看?PHP?程序是如何写的:
test2.php:
<?php?
require?"main.php";?
$array1?=?array(1?=>?"苹果",?2?=>?"菠萝",?3?=>?"香蕉",?4?=>?"芭乐");?
$tpl->assign("array1",?$array1);?
$array2?=?array(?
array("index1"?=>?"data1-1",?"index2"?=>?"data1-2",?"index3"?=>?"data1-3"),?
array("index1"?=>?"data2-1",?"index2"?=>?"data2-2",?"index3"?=>?"data2-3"),? array("index1"?=>?"data3-1",?"index2"?=>?"data3-2",?"index3"?=>?"data3-3"),? array("index1"?=>?"data4-1",?"index2"?=>?"data4-2",?"index3"?=>?"data4-3"),? array("index1"?=>?"data5-1",?"index2"?=>?"data5-2",?"index3"?=>?"data5-3"));? $tpl->assign("array2",?$array2);?
$tpl->display("test2.htm");?
?>?
而模版的写法如下:
templates/test2.htm:
<html>?
<head>?
<meta?");?
?>?
模版的写法如下:
templates/test3.htm:
<html>?
<title>巢状循环测试</title>?
</head>?
<body>?
<table?width="200"?border="0"?align="center"?cellpadding="3"?cellspacing="0">? <{section?name=sec1?loop=$forum}>?
<tr>?
<td?colspan="2"><{$forum[sec1].category_name}></td>?
</tr>?
<{section?name=sec2?loop=$forum[sec1].topic}>?
<tr>?
<td?width="25">?</td>?
<td?width="164"><{$forum[sec1].topic[sec2].topic_name}></td>?
</tr>?
<{/section}>?
<{/section}>?
</table>?
</body>?
</html>?
执行的结果就像笔者举的例子一样。
因此呢,在程序中我们只要想办法把所要重复值一层一层的塞到数组中,再利用?<{第一层数组[循环1].第二层数组[循环2].第三层数组[循环3].?...?.数组索引}>?这样的方式来显示每一个巢状循环中的值。至于用什么方法呢?下一节使用数据库时我们再提。
转换数据库中的资料
上面提到如何显示巢状循环,而实际上应用时我们的资料可能是从数据库中抓取出来的,所以我们就得想办法把数据库的资料变成上述的多重数组的形式。这里笔者用一个?DB?类别来抓取数据库中的资料,您可以自行用您喜欢的方法。
我们只修改?PHP?程序,模版还是上面那个?(这就是模版引擎的好处~),其中?$db?这个对象假设已经在?main.php?中建立好了,而且抓出来的资料就是上面的例子。
test3.php:
require?"main.php";?
//?先建立第一层数组?
$category?=?array();?
$db->setSQL($SQL1,?@#CATEGORY@#);?
if?(!$db->query(@#CATEGORY@#))?die($db->error());?
//?抓取第一层循环的资料?
while?($item_category?=?$db->fetchAssoc(@#CATEGORY@#))?
{?
//?建立第二层数组?
$topic?=?array();?
$db->setSQL(sprintf($SQL2,?$item_category[@#category_id@#]),?@#TOPIC@#);? if?(!$db->query(@#TOPIC@#))?die($db->error());?
//?抓取第二层循环的资料?
while?($item_topic?=?$db->fetchAssoc(@#TOPIC@#))?
{?
//?把抓取的数据推入第二层数组中?
array_push($topic,?$item_topic);?
}?
//?把第二层数组指定为第一层数组所抓取的数据中的一个成员?
$item_category[@#topic@#]?=?$topic;?
//?把第一层数据推入第一层数组中?
array_push($category,?$item_category);?
}?
$tpl->assign("forum",?$category);?
$tpl->display("test3.htm");?
?>?
在数据库抓取一笔资料后,我们得到的是一个包含该笔数据的数组。透过?while?叙述及?array_push?函式,我们将数据库中的资料一笔一笔塞到数组里。如果您只用到单层循环,就把第二层循环?(红色的部份)?去掉即可。
决定内容是否显示
要决定是否显示内容,我们可以使用?if?这个语法来做选择。例如如果使用者已经登入的话,我们的模版就可以这样写:
<{if?$is_login?==?true}>
显示使用者操作选单
<{else}>
显示输入帐号和密码的窗体
<{/if}>
要注意的是,「==」号两边一定要各留至少一个空格符,否则?Smarty?会无法解析。
if?语法一般的应用可以参照官方使用说明,所以笔者在这里就不详加介绍了。不过笔者发现了一个有趣的应用:常常会看到程序里要产生这样的一个表格:?(数字代表的是资料集的顺序)
1?2
3?4
5?6
7?8
这个笔者称之为「横向重复表格」。它的特色和传统的纵向重复不同,前几节我们看到的重复表格都是从上而下,一列只有一笔资料。而横向重复表格则可以横向地在一列中产生?n?笔资料后,再换下一列,直到整个循环结束。要达到这样的功能,最简单的方式只需要?section?和?if?搭配即可。
我们来看看下面这个例子:
test4.php:
<?php?
require?"main.php";?
$my_array?=?array(?
array("value"?=>?"0"),?
array("value"?=>?"1"),?
array("value"?=>?"2"),?
array("value"?=>?"3"),?
array("value"?=>?"4"),?
array("value"?=>?"5"),?
array("value"?=>?"6"),?
array("value"?=>?"7"),?
array("value"?=>?"8"),?
array("value"?=>?"9"));?
$tpl->assign("my_array",?$my_array);?
$tpl->display(@#test4.htm@#);?
?>?
模版的写法如下:
templates/test4.htm:
<html>?
<head>?
<title>横向重复表格测试</title>?
</head>?
<body>?
<table?width="500"?border="1"?cellspacing="0"?cellpadding="3">?
<tr>?
<{section?name=sec1?loop=$my_array}>?
<td><{$my_array[sec1].value}></td>?
<{if?$smarty.section.sec1.rownum?is?div?by?2}>?
</tr>?
<tr>?
<{/if}>?
<{/section}>?
</tr>?
</table>?
</body>?
</html>?
重点在于?$smarty.section.sec1.rownum?这个?Smarty?变量,在?section?循环中这个变量会取得从?1?开始的索引值,所以当?rownum?能被?2?除尽时,就输出?</tr><tr>?使表格换列?(注意!是?</tr>?在前面<tr>?在后面)?。因此数字?2?就是我们在一列中想要呈现的资料笔数。各位可以由此去变化其它不同的呈现方式。
加载外部内容
我们可以在模版内加载?PHP?程序代码或是另一个子模版,分别是使用?include_php?及?include?这两个?Smarty?模版语法;?include_php?笔者较少用,使用方式可以查询官方手册,这里不再叙述。
什么是模板引擎36_引擎是什么意思
在使用?include?时,我们可以预先加载子模版,或是动态加载子模版。预先加载通常使用在有共同的文件标头及版权宣告;而动态加载则可以用在统一的框架页,而进一步达到如?Winamp?般可换?Skin?。当然这两种我们也可以混用,视状况而定。
我们来看看下面这个例子:
test5.php:
<?php?
require?"main.php";?
$tpl->assign("title",?"Include?测试");?
$tpl->assign("content",?"这是模版?2?中的变量");?
$tpl->assign("dyn_page",?"test5_3.htm");?
$tpl->display(@#test5_1.htm@#);?
?>?
模版?1?的写法如下:
templates/test5_1.htm:
<html>?
<head>?
<meta?"}><br?/>?
<{include?file=$dyn_page}>?
<{include?file="test5_4.htm"?custom_var="自订变量的内容"}>?
</body>?
</html>?
模版?2?的写法如下:
templates/test5_2.htm:
<{$content}>
模版?3?的写法如下:
templates/test5_3.htm:
这是模版?3?的内容
模版?4?的写法如下:
templates/test5_4.htm:
<{$custom_var}>
这里注意几个重点:1.?模版的位置都是以先前定义的?template_dir?为基准;2.?所有?include?进来的子模版中,其变量也会被解译。;3.?include?中可以用「变量名称=变量内容」来指定引含进来的模版中所包含的变量,如同上面模版?4?的做法。
用PHP实现MVC开发模式的逻辑层和表示层有多种模板引擎可供选择,但是官方引擎SMARTY诞生后,选择就有了变化。它的理念和实现都是相当"前卫"的。本文主要讨论SMARTY之于其他模板引擎的不同特点,简要介绍了该引擎的安装及使用,并用一个小的测试案例对比了SMARTY和PHPLIB?template的速度和易用性。
一、MVC需要模板
MVC最早是在SmallTalk语言的开发过程中总结出的一种设计模式,MVC分别代表了"模型"、"视图"和"控制",目的就是让不同的开发角色在大中型项目中各司其职。在网络应用程序的开发中,可以用下图来表示各概念之间的关系。?
该图展示了一个简单的WEB应用程序,用户在浏览器上看到信息是数据库服务器上的内容,但在这之前经过了应用服务器加工。开发人员负责的就是建立数据结构、处理数据的逻辑以及表示数据的方法。?
96年CGI在中国开始流行的时候,早期的WEB程序员都是从HTML开始自学成材的,在PERL中print一行行的HTML并不是一件难事,但是随着网络的一步步提速,页面大小也从当初的
二、三十K暴涨了十倍。写CGI程序就产生了一个迫切的要求:分开PERL和HTML源码。于是,社会进步体现在开发小组内部的分工上。由于美工和程序员对互相的工作并不是十分熟悉,在进行合作的过程中需要用一种约定的"语言"进行交流。?
这种语言并不是我们的母语或者英语,术语叫做"模板",逻辑和表示依靠它联系。它是结合了HTML和脚本语言特征的一种表达方式。通过这种方式,表示层可以按照用户所希望的格式来显示经过逻辑层处理过的数据。如果你有Windows平台下MFC的开发经验,那么一定会很熟悉Document/Document?Template/View的封装,这就是一个很典型的MVC例子。对于Web应用来说,个人认为J2EE中的EJB/servlets/JSP是最强大的,当然还有简洁优美的Structs。另一个很有名的实现就是COM/DCOM+ASP,这个组合在我国是最多人使用的。?
通过几种MVC实现在WEB应用程序里的对比,可以得到一个关于模板的概念:一组插入了HTML的脚本或者说是插入了脚本HTML,通过这种插入的内容来表示变化的数据。下面给出一个模板文件的例子,这个模板经过处理后在浏览器里显示"Hello,?world!"
<html>
<head>
<title>$greetings</title>
</head>
<body>
$greetings
<body>
</html>
这里暂且省略处理方式,在后面做专门对比讨论。
二、为什么选SMARTY??
对PHP来说,有很多模板引擎可供选择,比如最早的PHPLIB?template和后起之秀Fast?template,经过数次升级,已经相当成熟稳定。如果你对目前手中的模板引擎很满意,那么......也请往下看,相信你作为一个自由软件爱好者或者追求效率和优雅的开发者,下面的SMARTY介绍多少会有点意思。?
除了个人偏好的影响,我一直倾向于使用官方标准的实现,比如APACHE的XML引擎Axis。好处就是可以获得尽可能好的兼容性(比如早期MFC对于Win3x的兼容性就比其它的应用程序框架好,当然现在各种版本都很完善了)。SMARTY发布之前我一直使用的是?PEAR?中的Integrated?Template?eXtension。这个引擎和PHPLIB?template、Fast?template几乎是兼容的,从模板的语法到对模板的处理同出一辙:都是将模板读入内存然后调用parse()函数,用数据对预置的标记进行替换。
下面看看SMARTY是怎么做的。接到request后,先判断是否第一次请求该url,如果是,将该url所需的模板文件"编译"成php脚本,然后redirect;如果不是,就是说该url的模板已经被"编译"过了,检查不需要重编译后可以马上redirect,重编译条件可以自己设定为固定时限,默认的是模板文件被修改。?
怎么样,看起来是不是有点眼熟?想起来了──这不就是JSP的原理嘛!的确,这种"编译"用在PHP这样的解释性脚本引擎上显得匪夷所思,但是仔细想想,JAVA不也是由JVM解释执行的吗?这就叫"没有做不到,只有想不到"。?
既然谈到了JAVA,就再对PHP的未来发表一点看法。PHP官方网站上宣布了要在2003年年底发布PHP5.0版。这个版本拥有很多崭新的特性:比如异常处理,命名空间,更加面向对象等等。可以说越来越向JAVA靠拢,SMARTY也是新特性之一,使得PHP更适用于大中型项目的开发。但是似乎离我当初选择它的原因──灵巧易用──越来越远了。但就一个软件的生存周期来看,PHP正处在成长期,开发者赋予它更多的功能,以期能胜任商业应用是利大于弊的。作为PHP的忠实用户,肯定不希望PHP总是被人指责"能力不足"吧?
为什么选择SMARTY,仅仅因为它很像JSP?当然有更为充分的理由。首先,除了第一次编译的成本比较高之外,只要不修改模板文件,编译好的cache脚本就随时可用,省去了大量的parse()时间;其次SMARTY像PHP一样有丰富的函数库,从统计字数到自动缩进、文字环绕以及正则表达式都可以直接使用;如果觉得不够,比如需要数据结果集分页显示的功能,SMARTY还有很强的扩展能力,可以通过插件的形式进行扩充。?
事实胜于雄辩。我设计了一个测试程序,通过速度和开发难度这两个因素对比了一下SMARTY和PHPLIB?template,选PHPLIB?template的原因是在patrick的文章?《在PHP世界中选择最合适的模板》中有一个PHPLIB?template对Fast?template的竞赛,结果PHPLIB?template大获全胜,这使得SMARTY有了一个很好的对手。在测试之前,先谈一下在安装过程中需要注意的问题。
三、可能遇到的问题?
在SMARTY的?官方网站上,有详尽的用户手册,可以选择在线HTML和PDF格式的版本。这里就不再涉及手册上已有的内容,只是把初次使用可能遇到的问题做个解释。?
第一个问题就很要命:提示说找不到所需文件?并不是每一个人都按照SMARTY默认目录结构来写应用的。这里需要手工指定,假设目录结构如下:
三 : 什么是人肉搜索引擎
【什么是人肉搜索引擎】 如果你爱他,把他放到人肉引擎上去,你很快就会知道他的一切;如果你恨他,把他放到人肉引擎上去,因为那里是地狱… 人肉搜索引擎与刺青、美白、护肤、减肥等直接在人肉上施行的种种行为无关。(www.61k.com) 顾名思义,人肉搜索就是利用现代信息科技,变传统的网络信息搜索为人找人、人问人、人碰人、人挤人、人挨人的关系型网络社区活动,变枯燥乏味的查询过程为“一人提问、八方回应,一石激起千层浪,一声呼唤惊醒万颗真心”的人性化搜索体验。 人肉搜索不仅可以在最短时间内揭露某某门背后的真相,为某三某七找到大众认可的道德定位,还可以在网络无法触及的地方,探寻并发现最美丽的丛林少女,最感人的高山牧民,最神秘的荒漠洞窟,最浪漫的终极邂逅…… 人肉搜索追求的最高目标是:不求最好,但求最肉。 人肉搜索引擎就是指更多的利用人工参与来提纯搜索引擎提供的信息的一种机制。猫扑网的人肉搜索引擎就是其中一个比较成功的例子。后面我们会根据猫扑的人肉搜索引擎给出一个更加具体的描述。 针对搜索引擎的Link Farm和Spam也许永远不会停止,因为他们能够从他们的作恶中得到利益。我们知道得到利益不是作恶的唯一原因,然而大规模的产业化的作恶唯一的原因当然是那样可以得到利益。 所以,这是一场永远无法结束的战争,只要搜索引擎还是应用最广泛的一种互联网应用,只要搜索引擎还是用户找到合适服务的最主要手段。很多人把问题归结于PageRank技术,当年人们也是这样抱怨META关键字和描述技术。也许Google或者其他的公司能够研究出来更加伟大的技术,来取代PageRank,但是谁知道这新的技术什么时候又会变成明日黄花。 搜索引擎是利用机器自动化的收集网络信息并有序化的一种技术。搜索引擎高效快速,然而因为现在人工智能并不完善,搜索引擎还很难甄别刻意的、修饰过的信息,所以SEO Spam才会那么猖獗。所以,有些人想从搜索引擎的反面来解决问题,那就是更多的利用人工把搜索引擎得到的信息进一步萃取,进一步有序化,我们称之为人肉搜索引擎。 编辑本段【人肉搜索引擎的起源】 应该很多人都知道,中国有一个叫猫扑的论坛,人气非常旺。在我的印象中,人肉搜索引擎的概念应该出自于猫扑。 跟很多论坛一样,猫扑上面也经常有人问这个问题、那个问题。同时,猫扑有种虚拟货币叫做Mp,问问题的人往往会用Mp来奖励可以帮助他们的人。虽然Mp不能吃、不能喝,但是还是有很多人醉心于挣取更多的Mp。那些惯于通过回答问题挣取Mp的人,在猫扑一般
人肉搜索什么意思 什么是人肉搜索引擎
叫做赏金猎人。[www.61k.com) 于是很有趣味的一幕出现了,某人需要解决一个问题,就在猫扑发贴并许诺一定数量的Mp作为酬谢。很快,就会有赏金猎人看到这个贴子,他们就会去用搜索引擎来寻找问题的答案,然后争先恐后地把找到的答案回在帖子里面邀功。最后,提问题的人得到了答案,赏金猎人得到了Mp,皆大欢喜。这也就形成了所谓的人肉搜索引擎的机制。有趣的是,我们可以发现人肉搜索引擎的搜索流程和搜索引擎,在不同服务器之间的分布式搜索流程看起来是那么的相似,区别仅仅在于发动和执行流程的是人,还是机器。 人肉搜索引擎的质量怎样保证呢?这是一个非常有趣的问题,从刚才的流程上大家可以发现,如果有足够多的赏金猎人,他们之间就会产生竞争,寻找资料速度的竞争、资料准确性的竞争。竞争的结果是,一个速度又快、资料又准确、全面的赏金猎人,会有越来越多的Mp,这会给他带来更多的成就感,同时他也会更加的醉心于赏金猎人的工作。甚至,据我所知很多赏金猎人会形成自己的职业道德和行为准则,这样可以给他们更大的自我实现,同时提高了用户的满意程度。这就形成了一个正反馈、一个良性循环,前提是有足够的激励(Mp)投入和足够产生竞争的参与者(赏金猎人)。 同时,很多人也为自己是一个人肉搜索引擎的用户感到自豪,因为这确实太好用了,不需要担心分词不准确,不用担心电脑错误的理解了你的话,不用担心搜索引擎收录范围不同造成的风险,甚至不需要学习搜索引擎怎么用,而且答案也不会仅仅局限于搜索引擎所能找到的信息,虽然绝大部分问题是通过搜索引擎就可以找到的。 然而,人肉搜索引擎几年来仅仅是一个概念,还没有成为一种产品。在猫扑,人肉搜索引擎只能帮助猫扑提升人气,并不能成为一个产品给猫扑带来效益,同时也给更多的人服务。这是为什么呢?我想可能有4点原因: 1、猫扑人肉搜索引擎和论坛的差异不够明显。或者说在猫扑里,人肉搜索引擎只是论坛的一种应用而已,任何需要人肉搜索引擎服务的人必须是论坛的用户,这降低了用户普及度。 2、Mp过于游戏化。Mp是虚拟货币,是游戏化的货币,这也给猫扑的人肉搜索引擎加上了游戏性的标签。做赏金猎人的人仅仅是喜欢这个游戏化氛围的人,或者说是能被Mp这样的虚拟货币激励的人,这影响了赏金猎人队伍的扩大,从而影响了人肉搜索引擎的扩大。 3、人肉搜索引擎的反映比较慢。Google可以在0.00001秒内给你一个答案,然而人肉搜索引擎需要等待有人看到你的帖子,并找出结果才会有所反应。 4、猫扑人肉
人肉搜索什么意思 什么是人肉搜索引擎
搜索引擎不能保留历史纪录,每次有一个问题出现,就会引发一次分布式搜索。(www.61k.com]即使问题是重复的,也会同样引发这个流程,而且相同的问题在不同的时间问,答案可能迥异,不能对相同答案给予一致性的结果。 编辑本段【人肉搜索引擎大事件纪实】 搜索引擎就是通过关键词搜索网页的工具,但你知道最强的搜索引擎是什么吗?或许你会说百度,还有Google,又或者你会问是雅虎、MSN、中搜、爱问、搜狗当中的哪一个?其实答案并不在其中,而应该是——“人肉搜索引擎”!不信?!从卖身救母事件,网络虐猫事件,到火爆的“铜须门”网络丑闻和近期的“功夫少女”色情照片事件,还有最近针对流氓外教的“网络追杀令”,人肉搜索引擎时刻显示着网民互动战争的浩瀚、壮阔,如此强大的人海战术威力不禁让人折服! 一个“号召13亿人一起动手把她找出来”的“搜索令”在网上迅速传开,一名年轻女子由于在视频中辱骂四川地震引发众多网友震怒,从声讨到寻找到警方根据网友线索将其扣押,仅用时不到半天。 在这段长4分40秒的视频中,该名身穿彩色条纹T恤的女子身处网吧,脚翘在桌上,用很是轻蔑的口气大谈对四川地震和灾区难民的看法,激烈和肮脏字眼充斥其中。她对地震表示有幸灾乐祸的感觉。网站没有颜色、电视里全是灾难报道、哀悼日让她玩不成游戏成了她抱怨的理由。 视频在08年5月21日上午出现在国外最大视频网YOUTUBE后,该女子成了首页里的新闻人物,并开始在国外网站风传,不到1个小时,该视频被中国网民链接到了天涯、猫扑等国内大型论坛上,以前所未有的速度开始传播,网民开始震怒,一个“号召13亿人一起动手把她找出来”的“搜索令”在天涯社区发起,“辽宁女”和“辽宁骂人女”成为该女子的代号,迅速占据各网站的新闻首页,成为网友最高点击率、评论回复最多的事件。 此次搜索行动是最典型的“人肉搜索”,即通过人找人,人问人,人碰人,人挤人的网络社区活动寻找当事方,网友通过其上网的IP地址,找到上网的具体地点,随后,QQ号和QQ空间被找到,里面存储的相关资料,包括年龄、血型、居住地被公开,随着QQ密码被网友攻破,其同事的QQ号也被查出,信息被公布到“主战场”——天涯后,更大的搜索网铺开,半小时不到,有匿名网友发帖称得知该女子的详细信息:1987年出生,沈阳市苏家屯人,她的身份证号码、家庭成员、具体地址、工作地点,甚至父母亲和哥哥的电话全被“挖”了出来。 “一个人怎么可以无耻无知到这种地步?”、“心痛得让人滴血”等评论开始铺天盖地。
61阅读提醒您本文地址:
人肉搜索什么意思 什么是人肉搜索引擎
但不到半天时间,网民情绪从惊讶、难受开始向愤怒、暴怒的情绪急剧转向,各种极端言论频频出现。[www.61k.com] 21日下午1时,沈阳市公安局苏家屯区分局根据网上提供的该女子的信息资料,在一家网吧将其抓获,现已拘留。警方称,该女因对网吧停止游戏娱乐活动不满而录制了辱骂视频,目前她已对自己的言论表示忏悔和道歉。 但网络上的“声讨战”远没有结束,记者发现,这段辱骂视频虽已多数不能观看,过激的网友评论也被屏蔽。 但随即,战场转移到了各贴吧和私人博客上,该女子行为是否违法以及如何处理成了新的讨论热点。 有关律师称,这已超出言论自由的范畴,涉嫌侮辱罪,但警方对其拘留是出于对社会秩序和公德的保护。“人肉搜索”的参与各方应坚持基本的行为底线,不能通过这种行为模式侵害任何人的合法权益。 而人大社会学家则认为,应该允许其有改过和道歉的机会,网友行为发展过激,已成为新一轮“口水暴力”,这种以暴制暴的方式不可取。 编辑本段【人肉搜索vs电脑搜索】 人肉搜索引擎其实就是在一个社区里面提出一个问题,由人工参与解答而非搜索引擎通过机器自动算法获得结果的搜索机制。 通俗来说就是通过广聚五湖四海的网友力量,每个遇到困难的人提出问题,而有这方面知识或者线索的人就对其解答、分析,可以说是一种问答式搜索。 百度知道、新浪爱问、雅虎知识堂从本质上说是人肉搜索引擎,因为人肉搜索基于社会工程学的基础之上。 对于一些八卦搜索、没有唯一答案的多选结果搜索,人肉搜索往往能得到更有价值和吸引力的结果。 在百度知道里待解决问题数目高达966979,而爱问知识人则称“知识人,亿万网民帮您解决困难!” 为什么会有如此惊人的数字呢?其实这就是人肉搜索引擎的威力所在,也证实了不能通过机器搜索引擎解决所有的困难。 相反,由于网络这个虚拟空间聚集了各地的不同阶层,不同知识背景的人,得到帮助的几率也会大大增加。 当然,人肉搜索引擎也有比不上机器搜索引擎的地方,那就是速度。 Google可以0.00001秒内给你一个答案,然而人肉搜索引擎需要等待有人看到你的帖子,并找出结果才会有所反应。 所以说,人肉搜索引擎的潜在力量比机器搜索引擎强大,但反馈速度就比不上机器搜索引擎,两者的挑战只能说是平手。 编辑本段【人的力量究竟有多大】 在人肉搜索引擎上充分体现了“团结就是力量”,能在短短数天找到虐猫事件中残忍的网络美女嫌疑人,追查功夫少女事件的幕后黑手。 这一场场由网民发动起来的战争都不禁让人拍
人肉搜索什么意思 什么是人肉搜索引擎
手称快,更让人惊叹google、baidu的自然语言智能处理的功能,还比不上有常识的普通上网者的头脑分析团结起来的巨大力量。(www.61k.com)然而,人肉搜索也被称为很好很强大的搜索行为。 “网络通缉令”也有发错的时候:在最近的一起“网络通缉令”事件中,其不幸者就由于被网友误当做被通缉者,他的手机和家庭住址等私人信息都被公布在网络上,甚至连8岁女儿是领养的隐私也被人公布。更是因此接到大量骚扰电话,生活受到了极大干扰,需要通过法律途径解决。 水能载舟,亦能覆舟。人的力量虽然是无穷的,但在遵循网络道德的前提下善用人肉搜索引擎才是最英明的抉择。你们说呢? 编辑本段【案例研究:从人肉搜索探讨个人隐私权】 4月17日,王菲诉张乐奕(北飞的候鸟)、大旗网(北京凌云互动信息)、天涯(海南天涯在线网络科技)三网站侵犯名誉权案在北京市朝阳区人民法院开庭,这是继虐猫、铜须、很黄很暴力三件网络事件后,出现的国内反“人肉搜索”第一案。 据百度百科记载,“人肉搜索引擎的概念应该出自于猫扑”。其实“人肉搜索”与人肉丝毫无关,但的的确确却与人有关。 它是通过网络与现实中的人的结合、集成出关于某个人或事件的准确信息的人或单位的行为。 在愚人节,谷歌人肉搜索招聘自愿者活动启动后,本博也以县域信息化正式加盟谷歌人肉搜索的方式顺便寓了一把。:-) 可是,无论愚人还是寓事,都离不开现实中的人的隐私权这个严肃的问题。这也是导致人肉搜索由网络事件升级到司法诉讼的关键所在。 隐私权是中外都非常关注的一个话题,特别是在网络时代,更为敏感。 在2004年的美国,谷歌推出1G免费信箱同时,弹出了与信函内容相关的广告的做法,引发了人们对“谷歌确实读了人们的电子邮件”的“隐私侵犯行为”的疑惑(《搜》P27)。 在我国,一般意义上的隐私权,是指公民享有的私人生活安宁不受他人非法干扰,私人信息保密依法受到保护不受他人非法搜集、刺探,公开利用和侵扰的一种人格权。 但我国宪法对人格权(第38条)、民法对名誉权、人格权(民法通则第101条、司法解释第140条)也都只是框架性的规定,并无明确的保护隐私权法律规定。 因此,王菲以侵犯名誉权起诉,是与法律规定最相符合的一种民事侵权诉讼 当然,任何人只要认为自己的人格权受到了侵犯,并符合法律规定的条件,都可以起诉,这是公民自我保护的的法律手段。 这是这个案件的一个方面。从另一个方面讲,隐私权问题又是任何经营者不能不关注的问题。 在美国,同样是谷歌,在其
人肉搜索什么意思 什么是人肉搜索引擎
隐私条款中规定,“(如果)我们得出结论,这样做是我们的法律义务,或者相信获取、保护或公开这些信息对于保护Google、Google的用户以及公众的权利、财产和安全是合理而必要的……我们可以分享(客户的个人)信息。(www.61k.com)” 这个意思是说,只要谷歌决定想看,它就可以查看你的个人信息(《搜》P35)。 在国内,作为本案被告之一的天涯社区在其违规信息举报须知中提出,“泄露个人隐私(如姓名、身份、电话、住址、身份证号码等),明显侮辱或诽谤他人,对他人构成伤害或侵害他人合法权益”的网友“可及时进行举报,我们会及时予以删除”。 这里有三点值得注意: 第一,有人在网站对个人隐私信息实施了泄露行为; 第二,这种泄露必须是侮辱和诽谤性质的,并且是明显的; 第三,对被泄露信息的人的合法权益造成了实际上的侵害。 如果这个三点是且的关系的免责声明被法院认可的话,恐怕很难认定侵犯了别人的隐私权。 当然,案件的判决最终取决于法院认定的事实、法律规定的条款和法院判决的导向。 因此,要分清个人隐私权的界面,既是一个正在探讨的理论问题,也是一个法律规定的严肃问题,更是一个社会和谐的现实问题。 不过,县域信息化网可以给出这样的初步结论:首先,包括个人隐私权在内的人格权应该受到法律的保护,尽管法律规定还不明确。 其次,个人隐私权以及经营权的行使,要以法律规定为依据,但要以不危害他人以及社会公德为底线。 再次,在个人隐私权与网络运营行为发生冲突时可以依法诉讼,但法律并不能解决所有的问题。 “人肉搜索”引擎是近年来在互联网兴起的一种资料搜索方式,很多人把它误会成单纯的“寻人”机制,而实际上“人肉”的内涵远不止如此,它更多时候代表着依托的载体而不仅仅是要寻找的目标。 它是一个依托来自五湖四海的网民而不再依赖网络数据库的新型搜索工具,利用现代信息科技,变传统的网络信息搜索为人找人、人问人、人碰人、人挤人、人挨人的关系型网络社区活动,变枯燥乏味的查询过程为“一人提问、八方回应,一石激起千层浪,一声呼唤惊醒万颗真心”的人性化搜索体验。 “人肉搜索”正反方的争执 在人肉搜索引擎的发展史中,“辽宁女”事件不过是其强大搜索能力最近的一次展示,类似的事件几乎每天都在网络上重复上演着。 在由衷赞叹它强大威力的同时,一些人对它的存在也表示了自己的忧虑,从而逐渐形成了正反两方针锋相对的观点,对人肉搜索持肯定态度的一方认为它不仅可以在最短时间内揭露一些事件背
61阅读提醒您本文地址:
人肉搜索什么意思 什么是人肉搜索引擎
后的真相,维护社会道德秩序,还可延伸到网络无法触及的地方,拓宽了人们获取知识的途径,充分发动了人际网络的力量,将互联网“互助、分享”的精神发扬光大。[www.61k.com] 在地震发生后,人肉搜索同样跨越时间空间限制,协助很多灾区人民亲友团聚。 反对的一方则一针见血地指出,未经授权公开资料是对隐私权赤裸裸地侵犯,而人肉搜索的参与者们有成长为网络暴民的趋势。 人肉搜索究竟是互助精神的体现还是一种新的暴力? 也许人肉搜索的发起者和参与者更具有发言权。 带着疑问记者走访了猫扑、百度、奇虎等业内知名网站,对于人肉搜索的起源、发展和存在的问题进行了深入的讨论,也许可以从中管窥这个新兴事物的发展方向。 狭义“人肉搜索”易侵犯隐私 据了解,猫扑网是最早启动人肉搜索功能的网站,在猫扑“人肉搜索”版上经常有人问各种问题。 而为了增加用户参与热情,猫扑设计了虚拟货币(Mp),提出问题者往往会用Mp作为“悬赏”来奖励可以帮助自己的人。 由此出现了通过回答问题挣取Mp的 “赏金猎人”,他们用搜索引擎来寻找问题的答案,然后争先恐后地把找到的答案回在帖子里面邀功。 最后,提问题的人得到了答案,赏金猎人得到了Mp,皆大欢喜。 寻人,是人肉搜索引擎的一个主要功能。网友可能通过一段录像的背景,地理环境等等剥茧抽丝最终锁定目标,几乎人人都成了福尔摩斯。 不过这也正是有关侵犯隐私权争议的来源。据猫扑大杂烩负责人杜培源表示,“人肉搜索机制绝大部分时候是在默默地为广大的网民提供帮助,基本上都是通过求助、发问的方式获得很多网友的帮助和回答。这个是广义的人肉搜索,也就是人肉搜索最为主要的应用,而通常我们提到的那种社会层面的寻找具体的人和线索的人肉搜索,在人肉搜索的应用当中占到的是非常非常小的一部分,属于很特殊的少数情况,我们称之为狭义的‘人肉搜索’。狭义的人肉搜索存在的侵犯隐私问题,需要相应的内容监管和正面引导”。 知识问答是精髓所在 其实,猫扑的观点已经很好解释了人肉搜索目前所面临的环境,人们和部分传媒的目光很多都集中在“寻人”这个热点问题上,而对于人肉搜索的公益性质资料共享和问题解答却很少给予关注和正确评价,以偏概全的结果就是对人肉搜索的无限妖魔化。 大型互动搜索工具“百度知道”,它的设计初衷源自于对网民需求的深入把握,致力于为网民提供更便捷的信息获取方式,找到所求,通过提供互动问答平台,一问一答的形式使网民能够更好地获取信息和知识。 其实从
人肉搜索什么意思 什么是人肉搜索引擎
它的性质上看,百度知道完全可以归类于广义上的人肉搜索,因为回答问题的依然是人,然而百度方面认为百度知道跟“人肉搜索”是完全不同的产品。(www.61k.com) 2008年3月7日奇虎公司推出了问答形式网站。据奇虎公司副总裁刘峻表示:“奇虎的‘人肉搜索’事实上应该被称为‘经验搜索’,人脑中的知识和经验通过论坛帖子和博客的形式反映在网络上,被奇虎的搜索引擎捕捉。 存在于人脑中的知识(经验),只会通过博客、论坛帖子的形式反映在网络上,通过对博客和论坛帖子的搜索,实际上就是对全国网民的大脑进行搜索。 这是人肉搜索引擎在特定环境下的一个自我完善,也能够远离有关隐私问题的困扰”。 编辑本段【“人肉搜索”存在法律风险】 尽管有关人肉搜索的争议只是它产生庞大社会效应的冰山一角,但是网络的开放性和缺乏约束使得对一些行为的定性变得更加复杂。 环中律师事务所的法律专家赵海涛先生告诉记者:“我国《计算机信息网络国际联网安全保护管理办法》第7条规定‘用户的通信自由和通信秘密受法律保护。任何单位和个人不得违反法律规定,利用国际联网侵犯用户的通信自由和通信秘密。’第18条规定‘不得擅自进行未经许可的计算机学校,篡改他人信息,冒用他人名义发出信息,侵犯他人隐私’。” 而事实上人肉搜索引擎从诞生起就不可避免地触及到隐私问题,因此对于人肉搜索可能带来的泄密、隐私侵犯等问题,猫扑大杂烩负责人杜培源态度很明确地表示,“对于那种牵涉到侵犯个人隐私的内容,一律做删除和屏蔽处理。猫扑认为现在可行的约束办法就是加强内容的管理和正面的引导,让人肉搜索这种特殊的互联网互助行为为更多的网友提供有效的帮助。”参考资料:
61阅读提醒您本文地址:
四 : 好搜搜索引擎是什么?怎么使用?好搜搜索引擎使用图文教程
相信还有很多朋友对于360搜索推出的这个独立品牌好搜怎么使用还不太清楚,下文小编就为大家带来好搜搜索引擎的使用教程,一起去了解下吧。
1.说起“好搜”可能大家都很陌生,但是实际上这个搜索引擎早就发布了,只是在原来的基础上改名换姓,重新发布,重新起航了,这也是在失败之后的一种应对策略。
2.怎么进入好搜呢?我们还是通过习惯的百度搜索引擎进入,输入好搜,搜索结果的第一个(好搜,不做坏事!)就是我们要找的,点击进入。
3.进入好搜的界面之后,我们发现其实和百度搜索首页差不多,都包含了新闻、网页等等搜索,同时,也存在自己的特色,比如良医、学术的搜索,我们先来体验下新闻搜索吧。
4.比如我们输入“百度经验”,会出现一些搜索结果,但是和使用百度搜索出来的结果明显不一样,这一块主要的差别就是两者的基础数据库不一样。
5.除了通常所说的网页、新闻的搜索,我们还可以进行学术、良医、软件等方面的搜索,接下来,小编就简单给大家演示下良医和学术搜索的方法。
6.这里有一个非常专业的医疗模块,我们可以查询养生的方法、疾病的治疗、医院挂号等等,据说好搜在医疗市场的占有量是超过百度的,这也是好搜发布引起关注的原因吧。
7.类似于百度学术,目前一些论文期刊的查询也是一块香饽饽,随着国内研究氛围逐渐成熟,人们对于学术期刊越来越重视,所以只要我们在好搜学术里边搜索相应的论文关键词,就可以查找相关论文,以便我们更好的研究。
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1