日志--张先生的驿站,心灵车站欢迎你
日志
相册

首页

 > 

日志

 > 程序心得

 1 2 次页 

深入剖析Zen cart模板目录结构

2009-12-19

Zen Cart模板设计说简单其实也挺简单的说复杂也比较复杂,需要一定的时间来熟悉。一旦你了解了它的结构,就会慢慢习惯了。

首先要阅读常见问答部分的:如何添加、制作新模板Zen Cart的设计没有什么特别,与以前设计HTML页面是一样的。只是整个页面分成了好几个部分,并加入了php代码。

通常,页面分为页眉(header),页脚(footer),边框(sideboxes)。所以设计页面的时候,要记住Zen Cart是如何组织这些页面的。

页面是通过CSS样式表来控制的。样式表控制表格单元的背景图案、字体的颜色和样式等等。所以,假如你需要修改边框标题栏的字体,那么查看样式表文件。

Zen Cart在页面添加图像有两种方式。可以使用图像目录的相对路径,或者在模板中用php变量定义图像。如果你使用https服务器,并且采用相对图像路径,那么https的图像目录下也要有同样的图像,否则https服务器很可能会给出警告提示。

Zen Cart可以设置成任意的html/flash的界面,只是比通常的html页面的设计费时。你可以从修改缺省的模板开始,先修改CSS文件和三栏格式的界面。开始先采用不同的颜色,很快就可以设计出完全不同的风格。

最后,在设计模板前要先计划好你网页的内容,事半功倍。

下面是zen cart页面各部分相对应模板文件的一个列表:

文件路径 注释
index.php 主文件
includes/templates/[custom template folder]/common/html_header.php 页面的head部分
includes/templates/[custom template folder]/common/tpl_main_page.php 页面的body部分
includes/templates/[custom template folder]/common/tpl_header.php 所有页面的页眉
(column left)  
includes/templates/[custom template folder]/common/main_template_vars.php 决定页面的内容部分,缺省为 ‘tmp_index_default.php’
首页 – 缺省
includes/templates/[custom template folder]/templates/tmp_index_default.php 首页模板文件
首页 – 显示分类
includes/templates/[custom template folder]/templates/tpl_index_categories.php 首页上显示分类时的模板文件
includes/modules/[custom template folder]/pages/index/category_row.php 选择要显示的分类
includes/templates/[custom template folder]/templates/tpl_index_category_row.php 显示分类
首页 – 显示指定分类
includes/templates/[custom template folder]/templates/tpl_index_product_list.php 首页上显示指定的分类时采用的模板文件
includes/modules/[custom template folder]/product_listing.php 将商品数据添加到数组
includes/templates/[custom template folder]/templates/tpl_modules_product_listing.php 显示商品数量和商品导航菜单
includes/templates/[custom template folder]/common/tpl_list_box_content.php 显示商品数组
商品信息页面
includes/templates/[custom template folder]/templates/tpl_product_info_display.php 显示单件商品信息
购物车页面
includes/templates/[custom template folder]/templates/tpl_shopping_cart_default.php 购物车页面
(column right)  
includes/templates/[custom template folder]/common/tpl_footer.php 所有页面的页脚

有2篇文档很有参考价值:
http://www.zen-cart.com/modules/ipb/index.php?showtopic=9912
http://www.zen-cart.com/modules/xoopsfaq/index.php?cat_id=3#14

征婚信息

2009-06-11

 一女程序员的征婚信息:

SELECT * FROM 男人们
WHERE (未婚 = TRUE OR 离异 = TRUE ) AND 同性恋 = FALSE AND 穷光蛋 = FALSE AND 条件 IN ('细心','温柔','体贴','贤惠','会做家务','会做饭','会逛街买东西','会浪漫','活泼','可爱','帅气','绅士','大度','气质','智慧','能带孩子') ;

 

下面俺也模仿征个婚:

SELECT * FROM  女人
WHERE  未婚 = TRUE  AND 国籍='中国' AND (年龄>=24 AND 年龄<=28) AND  身高>=160cm AND 身高<=170cm AND 条件1  IN ('漂亮','健康','细心','温柔','体贴','贤惠','会做家务','会洗衣服','会做饭','气质','智慧','能带孩子',' 不会骂人') AND 条件2='不会花钱';

呵呵,说这世间有几女能看懂?看懂了就是奇女子了,呵呵奇女子可当真。

列表框多选数据至另一个列表框

2009-05-04

答1:
<HTML>
<HEAD>
<TITLE>Menu Swapper</TITLE>
<META HTTP-EQUIV="The JavaScript Source" CONTENT="no-cache">

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
sortitems = 1; // Automatically sort items within lists? (1 or 0)
function move(fbox,tbox,movemod) {
for(var i=0; i<fbox.options.length; i++) {
   if((fbox.options[i].selected || movemod) && fbox.options[i].value != "") {
    var no = new Option();
    no.value = fbox.options[i].value;
    no.text = fbox.options[i].text;
    tbox.options[tbox.options.length] = no;
    fbox.options[i].value = "";
    fbox.options[i].text = "";
   }
}
BumpUp(fbox);
if (sortitems) SortD(tbox);
}
function BumpUp(box) {
for(var i=0; i<box.options.length; i++) {
   if(box.options[i].value == "") {
    for(var j=i; j<box.options.length-1; j++) {
     box.options[j].value = box.options[j+1].value;
     box.options[j].text = box.options[j+1].text;
    }
    var ln = i;
    break;
   }
}
if(ln < box.options.length) {
   box.options.length -= 1;
   BumpUp(box);
}
}
function SortD(box) {
var temp_opts = new Array();
var temp = new Object();
for(var i=0; i<box.options.length; i++) {
   temp_opts[i] = box.options[i];
}
for(var x=0; x<temp_opts.length-1; x++) {
   for(var y=(x+1); y<temp_opts.length; y++) {
    if(temp_opts[x].text > temp_opts[y].text) {
     temp = temp_opts[x].text;
     temp_opts[x].text = temp_opts[y].text;
     temp_opts[y].text = temp;
    }
   }
}
for(var i=0; i<box.options.length; i++) {
   box.options[i].value = temp_opts[i].value;
   box.options[i].text = temp_opts[i].text;
}
}
function restr(rbox,tbox,str) {
if(tbox.options.length){
   rbox.value = tbox.options[0].value;
   for(var i=1; i<tbox.options.length; i++) {
    rbox.value = rbox.value+str+tbox.options[i].value;
   }
}else rbox.value = ""
}
// End -->
</script>
</HEAD>

<BODY>

<center><center>
<form ACTION="" METHOD="POST">
<table border="0">
<tr>
<td>可选项目:<br>
<select multiple size="8" name="list1" style="width: 150">
<option value="11"> item 1.1 </option>
<option value="12"> item 1.2 </option>
<option value="13"> item 1.3 </option>
<option value="21"> item 2.1 </option>
<option value="22"> item 2.2 </option>
<option value="23"> item 2.3 </option>
</select>
</td>
<td>
<input type="button" value=">>" onclick="move(this.form.list1,this.form.list2,1)" name="B0" style="font-weight: bold; width: 32"><br>
<input type="button" value=">" onclick="move(this.form.list1,this.form.list2,0)" name="B1" style="font-weight: bold; width: 32"><br>
<input type="button" value="<" onclick="move(this.form.list2,this.form.list1,0)" name="B2" style="font-weight: bold; width: 32"><br>
<input type="button" value="<<" onclick="move(this.form.list2,this.form.list1,1)" name="B3" style="font-weight: bold; width: 32">
</td>
<td>已选项目:<br><select multiple size="8" name="list2" style="width: 150"></select></td>
</tr>
</table>
<input type="text" name="rst" value="" size="41">
<input type="button" value="go" onclick="restr(this.form.rst,this.form.list2,',')" name="B4" style="font-weight: bold; width: 32">
</form>
</center>
</center>
</body></html>


______________________________________________________________________________________________
答2:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function moveOver()
{
var boxLength = document.choiceForm.choiceBox.length;
var selectedItem = document.choiceForm.available.selectedIndex;
var selectedText = document.choiceForm.available.options[selectedItem].text;
var selectedValue = document.choiceForm.available.options[selectedItem].value;
var i;
var isNew = true;
if (boxLength != 0) {
for (i = 0; i < boxLength; i++) {
thisitem = document.choiceForm.choiceBox.options[i].text;
if (thisitem == selectedText) {
isNew = false;
break;
      }
   }
}
if (isNew) {
newoption = new Option(selectedText, selectedValue, false, false);
document.choiceForm.choiceBox.options[boxLength] = newoption;
}
document.choiceForm.available.selectedIndex=-1;
}
function removeMe() {
var boxLength = document.choiceForm.choiceBox.length;
arrSelected = new Array();
var count = 0;
for (i = 0; i < boxLength; i++) {
if (document.choiceForm.choiceBox.options[i].selected) {
arrSelected[count] = document.choiceForm.choiceBox.options[i].value;
}
count++;
}
var x;
for (i = 0; i < boxLength; i++) {
for (x = 0; x < arrSelected.length; x++) {
if (document.choiceForm.choiceBox.options[i].value == arrSelected[x]) {
document.choiceForm.choiceBox.options[i] = null;
   }
}
boxLength = document.choiceForm.choiceBox.length;
   }
}
function saveMe() {
var strValues = "";
var boxLength = document.choiceForm.choiceBox.length;
var count = 0;
if (boxLength != 0) {
for (i = 0; i < boxLength; i++) {
if (count == 0) {
strValues = document.choiceForm.choiceBox.options[i].value;
}
else {
strValues = strValues + "," + document.choiceForm.choiceBox.options[i].value;
}
count++;
   }
}
if (strValues.length == 0) {
alert("您没有选择任何内容");
}
else {
alert("您选择的内容如下:\r\n"+"第" + strValues+"条");
   }
}
// End -->
</script>
<center>
<form name="choiceForm">
<table border=0>
<tr>
        <td valign="top" width=175>
          <div align="center">可选内容:<br>
            <select name="available" onchange="moveOver();" size=10>
              <option value="1">内容一</option>
              <option value="2">内容二</option>
              <option value="3">内容三</option>
              <option value="4">内容四</option>
              <option value="5">内容五</option>
              <option value="6">内容六</option>
              <option value="7">内容七</option>
              <option value="8">内容八</option>
              <option value="9">内容九</option>
              <option value="10">内容十</option>
            </select>
          </div>
        </td>
        <td valign="top">
          <div align="center">你的选择:<br>
            <select multiple name="choiceBox" style="width:150;" size="10">
            </select>
          </div>
        </td>
</tr>
<tr>
        <td colspan=2 height=10>
          <div align="center">
            <input type="button" value="删除" onclick="removeMe();">
            <input type="button" value="结果" onclick="saveMe();">
          </div>
        </td>
</tr>
</table>
</form>
</center>
</body>
</html>

______________________________________________________________________________________________
答3:
<table border=0 cellpadding=0 cellspacing=0><form name=meizz>
<tr><td>
    <select id=list1 size=8 ondblclick="moveOption(this, this.form.list2)">
      <option value=A>aaaaaaaaaa
      <option value=B>bbbbbbbbbb
      <option value=C>cccccccccc
      <option value=D>dddddddddd
      <option value=E>eeeeeeeeee
      <option value=F>ffffffffff
      <option value=G>gggggggggg
      <option value=H>hhhhhhhhhh
    </select></td>
<td width=40 align=center>
    <input name=add type=button value=">>>" onclick="moveOption(this.form.list1, this.form.list2)"><br><br>
    <input name=sub type=button value="<<<" onclick="moveOption(this.form.list2, this.form.list1)">
</td><td>
    <select id=list2 size=8 ondblclick="moveOption(this, this.form.list1)">
    </select>
</td></tr></form>
</table>

<script language="JavaScript"><!--
function moveOption(e1, e2){
    try{
        var e = e1.options[e1.selectedIndex];
        e2.options.add(new Option(e.text, e.value));
        e1.options.remove(e1.selectedIndex);
    }   catch(e){}
}
//--></script>
______________________________________________________________________________________________
答4:
还有我要把要移动的数据,就是选中状态,怎么处理呀?
______________________________________________________________________________________________
答5:
<table>
<tr>
<td valign=top>
<select name=s1 multiple size=4 style="width:100">
<option value=1>aaaaaa
<option value=2>bbbbbb
<option value=3>cccccc
<option value=4>dddddd
<option value=5>eeeeee
<option value=6>ffffff
<option value=7>gggggg
<option value=8>hhhhhh
</select>
</td>
<td valign=middle align=center>
<input type=button name=b4 value=">" onClick="move(1)"><br>
<input type=button name=b5 value="<" onClick="move(2)">
</td>
<td valign=top>
<select name=s2 multiple size=4 style="width:100">
</select>
</td>
</tr>
<tr>
<td>
<input type=button name=b1 value=向上 onClick="up()">
<input type=button name=b2 value=向下 onClick="down()">
</td>
<td>
<input type=button name=b3 value=查看 onClick="show()">
</td>
<td>
</td>
</tr>
</table>

<script>
function up() {
s = document.all.s1;
v = new Array();
for(i=0;i<s.length-1;i++) {
    if(! s.options[i].selected && s.options[i+1].selected) {
      v.value = s.options[i].value;
      v.text = s.options[i].text;
      v.selected = s.options[i].selected;
      s.options[i].value = s.options[i+1].value;
      s.options[i].text = s.options[i+1].text;
      s.options[i].selected = s.options[i+1].selected;
      s.options[i+1].value = v.value;
      s.options[i+1].text = v.text;
      s.options[i+1].selected = v.selected;
    }
}
}

function down() {
s = document.all.s1;
v = new Array();
for(i=s.length-1;i>0;i--) {
    if(! s.options[i].selected && s.options[i-1].selected) {
      v.value = s.options[i].value;
      v.text = s.options[i].text;
      v.selected = s.options[i].selected;
      s.options[i].value = s.options[i-1].value;
      s.options[i].text = s.options[i-1].text;
      s.options[i].selected = s.options[i-1].selected;
      s.options[i-1].value = v.value;
      s.options[i-1].text = v.text;
      s.options[i-1].selected = v.selected;
    }
}
}

function show() {
s = document.all.s1;
v = "";
for(i=0;i<s.length;i++)
    v += s.options[i].value + ":" + s.options[i].text + "\n";
alert(v);
}

function move(m) {
if(m == 1) {
    ss1 = document.all.s1;
    ss2 = document.all.s2;
}
if(m == 2) {
    ss1 = document.all.s2;
    ss2 = document.all.s1;
}
v = new Array();
k = 0;
for(i=0;i<ss1.length;i++) {
    if(ss1.options[i].selected) {
      ss2.options[ss2.length] = new Option(ss1.options[i].text,ss1.options[i].value);
      v[k] = i;
      k++;
    }
}
for(i=v.length-1;i>=0;i--)
    ss1.options[v[i]] = null;
}
</script>

______________________________________________________________________________________________
答6:
在楼上的兄弟上面改了一下

 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY><table>
<tr>
<td valign=top>
<select name=s1 multiple size=4 style="WIDTH: 82px; HEIGHT: 167px">
<option value=1>aaaaaa
<option value=2>bbbbbb
<option value=3>cccccc
<option value=4>dddddd
<option value=5>eeeeee
<option value=6>ffffff
<option value=7>gggggg
<option value=8>hhhhhh</option>
</select>
</td>
<td valign=center align=middle>
<input type=button name=b4 value=">" onClick="move(1)"><br>
<input type=button name=b5 value="<" onClick="move(2)">
</td>
<td valign=top>
<select name=s2 multiple size=4 style="WIDTH: 99px; HEIGHT: 158px">
</select>
</td>
</tr>
<tr>
<td>
<input type=button name=b1 value=向上 onClick="up()">
<input type=button name=b2 value=向下 onClick="down()">
</td>
<td>
<input type=button name=b3 value=查看 onClick="show()">
</td>
<td>
</td>
</tr>
</table>

<script>
function up() {
s = document.all.s1;
v = new Array();
for(i=0;i<s.length-1;i++) {
    if(! s.options[i].selected && s.options[i+1].selected) {
      v.value = s.options[i].value;
      v.text = s.options[i].text;
      v.selected = s.options[i].selected;
      s.options[i].value = s.options[i+1].value;
      s.options[i].text = s.options[i+1].text;
      s.options[i].selected = s.options[i+1].selected;
      s.options[i+1].value = v.value;
      s.options[i+1].text = v.text;
      s.options[i+1].selected = v.selected;
    }
}
}

function down() {
s = document.all.s1;
v = new Array();
for(i=s.length-1;i>0;i--) {
    if(! s.options[i].selected && s.options[i-1].selected) {
      v.value = s.options[i].value;
      v.text = s.options[i].text;
      v.selected = s.options[i].selected;
      s.options[i].value = s.options[i-1].value;
      s.options[i].text = s.options[i-1].text;
      s.options[i].selected = s.options[i-1].selected;
      s.options[i-1].value = v.value;
      s.options[i-1].text = v.text;
      s.options[i-1].selected = v.selected;
    }
}
}

function show() {
s = document.all.s1;
v = "";
for(i=0;i<s.length;i++)
    v += s.options[i].value + ":" + s.options[i].text + "\n";
alert(v);
}

function move(m) {
if(m == 1) {
    ss1 = document.all.s1;
    ss2 = document.all.s2;
}
if(m == 2) {
    ss1 = document.all.s2;
    ss2 = document.all.s1;
}

v = new Array();
k = 0;
for(i=0;i<ss1.length;i++) {
    if(ss1.options[i].selected) {
      ss2.options[ss2.length] = new Option(ss1.options[i].text,ss1.options[i].value);
      ss2.options[ss2.length-1].selected = true // add By cpp2017
      v[k] = i;
      k++;
    }
}
for(i=v.length-1;i>=0;i--)
    ss1.options[v[i]] = null;
}
</script>
</BODY></HTML>

指定您的URL范式

2009-04-28




原文: Specify your canonical
发表于: 2009年2月12日星期四,12:30 PM

您可能会对URL形式不同造成的重复内容有所担心, 谷歌现在支持一种新的功能,使您可以指定您喜欢的URL格式。如果您的网站通过多种不同形式的URL向访问者提供完全相同或非常类似的内容,那么通过这种 功能您可以自主控制出现在搜索结果中的您网站的URL格式。同时这也有 助于将那些影响您网页声望值的因素更固定地指向您所青睐的URL格式上。

让我们以一个出售瑞典鱼的网页为例,假设我们所青睐的URL格式和所对应的内容是下面这样的:

http://www.example.com/product.php?item=swedish-fish
然而,访问者和谷歌机器人实际上可以通过另外的URL形式访问到这一内容。尽管URL的核心部分与您青睐的URL格式很相近,但是他们依据排序的参数或分类浏览种类的不同而向用户提供略有差别的网页。

http://www.example.com/product.php?item=swedish-fish&category=gummy-candy
或者,也有可能他们有着完全相同的内容,但是URL看起来并不相同,比如下面的URL还带有跟踪参数或者会话ID:

http://www.example.com/product.php?item=swedish-fish&trackingid=1234&sessionid=5678

现在,您可以将如下语句<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
加入到其他您不倾向于在搜索引擎出现的URL的<head>代码中,就能指定您喜欢的URL格式。

比如您不希望以下两种URL格式在搜索结果中出现:

http://www.example.com/product.php?item=swedish-fish&category=gummy-candy
http://www.example.com/product.php?item=swedish-fish&trackingid=1234&sessionid=5678

只要您将上文中的
语句加入到上述两个网页的<head>代码部分,那么谷歌就会知道以上两个网址实际上是被建议指向您指定的标准URL: http://www.example.com/product.php?item=swedish-fish上。 其他的URL属性,比如PageRank和相关的其他因素,也都会自动指向该标准URL。

这个标准同时也被其他搜索引擎在抓取和索引您网站时所接受和使用。

以下我们将以FAQ的形式,解答一些您可能存在的疑问:

从强制性与否来说,请问rel="canonical"是一个建议,还是一个指令?
是一个建议。这是一个我们非常自豪的功能,您可以以此提示搜索引擎考虑您对URL格式的喜好。

我能用相对路径来指定我的URL规范么,比如 <link rel="canonical" href="product.php?item=swedish-fish"/> ?
可以,在这里使用相对路径是可以被正确识别的,如果您在代码中指定了link,那么相对路径都会以此base URL为基础。

我可以将URL范式使用在不是完全相同内容的其他网页上吗?
我们允许这些网页之间有些细微差别,比如归在不同类目下的同一产品网页。

如果被指定为规范格式的URL返回404,怎么办呢?
我们会继续访问和抓取您的内容,并应用一些联想功能去寻找一个URL范式,但是我们强烈建议您将一个可访问的URL设置成URL范式。

如果我指定的URL范式并没有被索引会怎样?
就像网络上所有的公共内容一样,我们会努力发现和寻找您指定的URL范式,一旦我们索引到它,我们就会立即将您的rel="canonical"付诸考虑。

我的URL范式可以是一个重定向URL么?
可以,您可以指定一个发生重定向的URL作为URL范式,谷歌会继续跟踪这个重定向并尝试去抓取它。

如果我不小心指定了互相矛盾的URL范式怎么办?
不用担心,我们的算法是很聪明并宽容的,我们会跟踪抓取这个URL范式链,但是我们还是强烈建议您尽快将URL范式指定为特定单一URL形式,从而确保您的搜索结果早日得到优化。

这个link tag可以被用来建议一个在其他域名上的URL么?
不可以。如果您需要转移到一个不同的域名上,那么301永久重定向对您来说更合适。谷歌现在只能认可在不同子域名下的URL范式的指定。所以,站长们可以将www.example.comexample.com, 及help.example.com互相指定为范式,但是不能将example.comexample-widgets.com互相指定为范式。

听起来不错,能给我举一个现实中的例子么?
我们有一个真实的例子wikia.com。比如,您在
http://starwars.wikia.com/wiki/Nelvana_Limited 的源代码中可以发现,该网页已经把http://starwars.wikia.com/wiki/Nelvana指定为了URL范式。通过使用rel="canonical",两个网页的PageRank被整合计算,避免了分散计算的流失,同时搜索结果中也只会包含网站管理员所指定的URL形式。

如果您未能应用URL范式指定您心仪的URL形式,您也不要担心,我们会尽我们最大努力,选择一个更优化的URL形式,并将声望等属性值进行相应转移处理,就像我们以前做的那样(英文)。

补充:这个link tag现在也被Ask.com,微软Live Search和Yahoo!搜索等搜索引擎所支持。

Google 技术[转]

2009-04-27

Google 技术

Google 秉持着开发“完美的搜索引擎”的信念,在业界独树一帜。所谓完美的搜索引擎,就如公司创始人之一 Larry Page 所定义的那样,可以“确解用户之意,切返用户之需”。为了实现这一目标,Google 坚持不懈地追求创新,而不受现有模型的限制。因此,Google 开发了自己的服务基础结构和具有突破性的 PageRank™ 技术,使得搜索方式发生了根本性变化。

Google 的开发人员从一开始就意识到:要以最快的速度提供最精确的搜索结果,则需要一种全新的服务器设置。大多数的搜索引擎依靠少量大型服务器,这样,在访问高峰期速度就会减慢,而 Google 却利用相互链接的 PC 来快速查找每个搜索的答案。 这一创新技术成功地缩短了响应时间,提高了可扩展性,并降低了成本。这也是其他公司一直在效仿的技术。与此同时,Google 从未停止过对其后端技术的改进,以使其技术效率更高。

Google 搜索技术所依托的软件可以同时进行一系列的运算,且只需片刻即可完成所有运算。而传统的搜索引擎在很大程度上取决于文字在网页上出现的频率。Google 使用 PageRank™ 技术检查整个网络链接结构,并确定哪些网页重要性最高。然后进行超文本匹配分析,以确定哪些网页与正在执行的特定搜索相关。在综合考虑整体重要性以及与特 定查询的相关性之后,Google 可以将最相关最可靠的搜索结果放在首位。

  • PageRank 技术:通 过对由超过 50,000 万个变量和 20 亿个词汇组成的方程进行计算,PageRank 能够对网页的重要性做出客观的评价。PageRank 并不计算直接链接的数量,而是将从网页 A 指向网页 B 的链接解释为由网页 A 对网页 B 所投的一票。这样,PageRank 会根据网页 B 所收到的投票数量来评估该页的重要性。

    此外,PageRank 还会评估每个投票网页的重要性,因为某些网页的投票被认为具有较高的价值,这样,它所链接的网页就能获得较高的价值。重要网页获得的 PageRank(网页排名)较高,从而显示在搜索结果的顶部。Google 技术使用网上反馈的综合信息来确定某个网页的重要性。搜索结果没有人工干预或操纵,这也是为什么 Google 会成为一个广受用户信赖、不受付费排名影响且公正客观的信息来源。
  •  

  • 超文本匹配分析:Google 的搜索引擎同时也分析网页内容。然而,Google 的技术并不采用单纯扫描基于网页的文本(网站发布商可以通过元标记控制这类文本)的方式,而是分析网页的全部内容以及字体、分区及每个文字精确位置等因 素。Google 同时还会分析相邻网页的内容,以确保返回与用户查询最相关的结果。

Google 的创新并不限于台式机。 为了确保通过便携式设备访问网络的用户能够快速获得精确的搜索结果,Google 还率先推出了业界第一款无线搜索技术,以便将 HTML 即时转换为针对 WAP、i-mode、J-SKY 和 EZWeb 优化的格式。

Google 查询的全过程

Google 查询的全过程通常不超过半秒时间,但在这短短的时间内需要完成多个步骤,然后才能将搜索结果交付给搜索信息的用户。

3. 瞬间返回用户需要的搜索结果。     1. 网络服务器将查询发送到索引服务器。索引服务器所包含的内容与书本末尾的索引目录相似,即说明哪些网页包含与查询匹配的文字。
2.查询传输到文档服务器,由后者实际检索所存储的文档。然后,生成描述每个搜索结果的摘录。

 1 2 次页 


心灵车站全球战略伙伴:onVon.com    ItIsShop   isdb-t


加盟Email:raptor@raptorzhang.com
版权保护 如有雷同 必然追究