荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: keldy (QQ 糖), 信区: Homepage
标  题: [合集] 原创:如何将搜索结果按相似度降序排列出来?
发信站: 荔园晨风BBS站 (Fri Jun 22 01:29:33 2007), 站内

☆─────────────────────────────────────☆
   dtnl (的特呢了) 于  (Fri Dec 22 22:06:55 2006)  提到:

设计思路:
1、将关键词分三类:如a“超女何洁”、b“超女  何洁”、c“超女何节”

2、查找内容中完成匹配a,语法 content like '%"& keyword &"%'

3、查找内容中部分匹配b,语法:
   keywordStr=split(keyword," ")
   for i=0 to ubound(keywordStr)
   sql=sql&"content like"&"'%"& keywordStr(i) &"%'&" or"
   next
   执行时输出的语句如:content like '超女' or content like '何洁'

4、查找内容中分词匹配c,语法:
   (语法略)
   执行输入语句如:content like '超女何节' or content like '超女何' or content
like '超女' or content like '何节' or content like '女何节'

5、查找内容中单字匹配c,语法:
    wi=replace(keyword," ","") '却掉关键词中的空格
    for j= 1 to len(wi)
    wl=right(left(wi,j),1) '截取每个字符
    wt=wt&wl&"|"
    next                   '将关键词分成单字串,如“超|女|何|节|”
    ws=split(wt,"|")
    for j= 0 to ubound(ws)-1
    for i = 0 to 4
    sql=sql&"content like '%"&ws(j)&"%' or "
    next
    next
    sql="("&sql&" k1='"& w &"') ORDER By id DESC"
    执行输入语句为:content like '超' or content like '女' or content like '何'
or content like '节' or content like '超女何节'

目前来说,模糊搜索主要是效率问题。时间超过0.01秒的搜索都不是好的算法。
我根据以上的设计思路,做出来的搜索时间也不是好的算法,但终究还是把要得到的东西搜
索出来。

问题是,怎么样使得出的结果按相似度降序列表出来呢?

转载自CSDN:http://community.csdn.net/Expert/topic/5250/5250476.xml?temp=.7870447


☆─────────────────────────────────────☆
   servlet (nick) 于  (Fri Dec 22 23:33:32 2006)  提到:

    这类应用与语言几乎没什么关系。描述中掺入过多的语言会把自已搞糊途
也会令读者糊途。描述这类问题,最好直接用数学表达式,建立自已的一套
评分体制。
    下面简单说说我的思路。
    一般述语中,我们称词为term,而不叫keyword。一般用户输入一个keyword后,
先用一个分词模块分解keyword成n个term。例如keyword为“深圳酒店”,分词模块
会分成“深圳”,“酒店”两个term。而不会 分成“深”,“圳酒店”或“深圳酒”
,“店”这类term。一般来说分词模块的智能程度与性能对整个应用的影响很大。
上面我说的是“词典匹配”法。这类分词方法的特点是性能好,效果也可以接受。
当然也有人用多元法。但性能不太好。
    对keyword分词后。你还要用分词模块分解content成term。然后按照各种原则
例如keyword里的term跟content里的term中出现的总次数。一般来说出现次数越多,
分数(weight)也越高(这个原则只是整个formular中的一个参数)。还有其它原则,
用于排除干忧等。
    这类词相关性问题是无底洞。个人或小公司好像很难深入。最好进相关的大公司
研究。

【 在 dtnl (的特呢了) 的大作中提到: 】
: 设计思路:
: 1、将关键词分三类:如a“超女何洁”、b“超女  何洁”、c“超女何节”
: 2、查找内容中完成匹配a,语法 content like '%"& keyword &"%'
: 3、查找内容中部分匹配b,语法:
:    keywordStr=split(keyword," ")
:    for i=0 to ubound(keywordStr)
:    sql=sql&"content like"&"'%"& keywordStr(i) &"%'&" or"
:    next
:    执行时输出的语句如:content like '超女' or content like '何洁'
: 4、查找内容中分词匹配c,语法:
: ...................



☆─────────────────────────────────────☆
   dtnl (的特呢了) 于  (Sat Dec 23 14:19:14 2006)  提到:

大公司如百度的搜索原理似乎相对简单,一是人家硬件和速度跟得上,二是大框架大结构,
一切从建立宏观规模的索引库开始。

在有限的条件下,词典匹配法显得有些束手束脚。

【 在 servlet (nick) 的大作中提到: 】
:     这类应用与语言几乎没什么关系。描述中掺入过多的语言会把自已搞糊途
: 也会令读者糊途。描述这类问题,最好直接用数学表达式,建立自已的一套
: 评分体制。
:     下面简单说说我的思路。
:     一般述语中,我们称词为term,而不叫keyword。一般用户输入一个keyword后,
: 先用一个分词模块分解keyword成n个term。例如keyword为“深圳酒店”,分词模块
: 会分成“深圳”,“酒店”两个term。而不会 分成“深”,“圳酒店”或“深圳酒”
: ,“店”这类term。一般来说分词模块的智能程度与性能对整个应用的影响很大。
: 上面我说的是“词典匹配”法。这类分词方法的特点是性能好,效果也可以接受。
: 当然也有人用多元法。但性能不太好。
: ...................





☆─────────────────────────────────────☆
   servlet (nick) 于  (Sat Dec 23 14:32:38 2006)  提到:

    按照你的说法。现在只要有公司买得起像百度的硬件
就可以快速做出像百度一样的搜索引擎?以google的硬件规模
为何中文搜索,一直没超越百度?英文搜索,baidu为何还这么弱?
    搜索引擎的核心在算法,不在硬件。像google,他主要就是通过小型机
集群的方式运行的。
    但如果你硬要说百度搜索原理简单,我也没办法。
【 在 dtnl (的特呢了) 的大作中提到: 】
: 大公司如百度的搜索原理似乎相对简单,一是人家硬件和速度跟得上,二是大框架大结构
,一切从建立宏观规模的索引库开始。
: 在有限的条件下,词典匹配法显得有些束手束脚。
: 【 在 servlet (nick) 的大作中提到: 】
: :     这类应用与语言几乎没什么关系。描述中掺入过多的语言会把自已搞糊途
: : 也会令读者糊途。描述这类问题,最好直接用数学表达式,建立自已的一套
: : 评分体制。
: :     下面简单说说我的思路。
: :     一般述语中,我们称词为term,而不叫keyword。一般用户输入一个keyword后,
: : 先用一个分词模块分解keyword成n个term。例如keyword为“深圳酒店”,分词模块
: : 会分成“深圳”,“酒店”两个term。而不会 分成“深”,“圳酒店”或“深圳酒”
: ...................



☆─────────────────────────────────────☆
   dtnl (的特呢了) 于  (Sat Dec 23 21:31:15 2006)  提到:


【 在 servlet (nick) 的大作中提到: 】
:     按照你的说法。现在只要有公司买得起像百度的硬件
: 就可以快速做出像百度一样的搜索引擎?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~如果谁能策划出那么一套所向无敌的市场推广方
案把百度的市场份额分掉,百度其实不是神话。

以google的硬件规模
: 为何中文搜索,一直没超越百度?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~很明显,面向的市场不一样,建基于市场对象的索引库
也就不一样了。

英文搜索,baidu为何还这么弱?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~百度不弱,只是暂时以做“全球最大的中文搜索引擎”为
战略目标而已。

:     搜索引擎的核心在算法,不在硬件。像google,他主要就是通过小型机
: 集群的方式运行的。
~~~~~~~~~~~~~~~~~~~~~集群方式也涵盖于硬件和技术这两块,。

:     但如果你硬要说百度搜索原理简单,我也没办法。






☆─────────────────────────────────────☆
   servlet (nick) 于  (Sat Dec 23 21:44:13 2006)  提到:


【 在 dtnl (的特呢了) 的大作中提到: 】
: 【 在 servlet (nick) 的大作中提到: 】
: :     按照你的说法。现在只要有公司买得起像百度的硬件
: : 就可以快速做出像百度一样的搜索引擎?
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~如果谁能策划出那么一套所向无敌的市场推广
方案把百度的市场份额分掉,百度其实不是神话。
市场推广只是附助,技术才是这个品牌的支柱。
: 以google的硬件规模
: : 为何中文搜索,一直没超越百度?
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~很明显,面向的市场不一样,建基于市场对象的索引
库也就不一样了。
如果像你说的一样,SE各种算法像你说得那么简单。而百度的硬件也达到了这种水平,
应该小力气就可以在轻易在英文搜索上追赶google,为何baidu不这样做?
: 英文搜索,baidu为何还这么弱?
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~百度不弱,只是暂时以做“全球最大的中文搜索引擎”
为战略目标而已。
说句实话,baidu的英文搜索水平连google的影也看不到。
: :     搜索引擎的核心在算法,不在硬件。像google,他主要就是通过小型机
: ...................
:     搜索引擎的核心在算法,不在硬件。像google,他主要就是通过小型机
: 集群的方式运行的。
:~~~~~~~~~~~~~~~~~~~~~集群方式也涵盖于硬件和技术这两块,。
在硬件集群技术上,变化很少,技术含量也不高。SE的真正值钱的地方有两个
一个是品牌,另一个是算法。而SE的品牌是建立在他们独有的优秀的,另人不容
易模仿的算法上的。

显然推广+硬件不可以打造google,baidu,yahoo这样的品牌。


☆─────────────────────────────────────☆
   dtnl (的特呢了) 于  (Sat Dec 23 23:05:48 2006)  提到:

SE技术可以在附加相应硬件的基础上有所突破,而推广则需要机遇和手段,百度不是不想做
英文搜索,更不是技术上达不到谷歌的高度(条条大路通罗马,用户要的是结果的准确性和
返回速度,并不是要去认读你的算法参观你的机房。其实按照核心的分析、剥离、替换诸如
此类的各种算法来说,全英文搜索反而比汉英混合更纯粹更有效率——不敢说简单,以免再
动阁下肝火),百度独占全球首大中文搜索市场的动机及理由,李彦宏不说,我们也权且只
看它首页上的<title>便了。

【 在 servlet (nick) 的大作中提到: 】
: 市场推广只是附助,技术才是这个品牌的支柱。
: 如果像你说的一样,SE各种算法像你说得那么简单。而百度的硬件也达到了这种水平,
: 应该小力气就可以在轻易在英文搜索上追赶google,为何baidu不这样做?
: 说句实话,baidu的英文搜索水平连google的影也看不到。
: :~~~~~~~~~~~~~~~~~~~~~集群方式也涵盖于硬件和技术这两块,。
: 在硬件集群技术上,变化很少,技术含量也不高。SE的真正值钱的地方有两个
: 一个是品牌,另一个是算法。而SE的品牌是建立在他们独有的优秀的,另人不容
: 易模仿的算法上的。
: 显然推广+硬件不可以打造google,baidu,yahoo这样的品牌。





☆─────────────────────────────────────☆
   servlet (nick) 于  (Sat Dec 23 23:52:24 2006)  提到:

    现在全球做硬件的就那么几家:intel,sun,ibm……。SE用的硬件都是直接在那几家
买的。所以在硬件上,不会有什么突破。
    英文分词,比中文简单,但去干忧比中文复杂多了。在词相关性分析上,英文
也比中文难。
     就像你所说的,用户要的是结果的准确性和返回速度。在这两点上和你说的
“推广”跟本看不出有什么联系。
     硬件水平都差不多。推广,只要有钱,都可以找专门的大公司去做。
google,baidu在搜索市场领先了这么多年,一直被模仿,却从末被超越。为何?
核心部份还是算法。
     现在SE技术中,无论是分词,分析词相关性,spider技术。无论哪项,只要那部份
算法能跟上baidu或google的十分之一,你都可以拿到很多很多的钱。
【 在 dtnl (的特呢了) 的大作中提到: 】
: SE技术可以在附加相应硬件的基础上有所突破,而推广则需要机遇和手段,百度不是不想
做英文搜索,更不是技术上达不到谷歌的高度(条条大路通罗马,用户要的是结果的准确性
和返回速度,并不是要去认读你的算法参观你的机房。其实按照核心的分析、剥离、替换诸
如此类的各种
: 【 在 servlet (nick) 的大作中提到: 】
: : 市场推广只是附助,技术才是这个品牌的支柱。
: : 如果像你说的一样,SE各种算法像你说得那么简单。而百度的硬件也达到了这种水平,
: : 应该小力气就可以在轻易在英文搜索上追赶google,为何baidu不这样做?
: : 说句实话,baidu的英文搜索水平连google的影也看不到。
: : :~~~~~~~~~~~~~~~~~~~~~集群方式也涵盖于硬件和技术这两块,。
: : 在硬件集群技术上,变化很少,技术含量也不高。SE的真正值钱的地方有两个
: : 一个是品牌,另一个是算法。而SE的品牌是建立在他们独有的优秀的,另人不容
: : 易模仿的算法上的。
: ...................



☆─────────────────────────────────────☆
   dtnl (的特呢了) 于  (Sun Dec 24 23:36:34 2006)  提到:

问题是,有钱不一定能推广得开来,即使推广得家喻户晓了,也未必有用户去用。一直是用
的是立白,纵是你奇强吹得天花乱坠,还是分不了属于人家的洗衣粉市场。你说的技术至上
这一点,我无意否认。我说的“简单”也并非在否定它的重要性,而是说技术是可以超载的
,但推广方面则实在需要机遇。google baidu 之不败,不只是技术领先,更重要的是,他
是搜索市场的立白洗衣粉——做洗衣粉,而且只做立白洗衣粉。

【 在 servlet (nick) 的大作中提到: 】
:     现在全球做硬件的就那么几家:intel,sun,ibm……。SE用的硬件都是直接在那几家
: 买的。所以在硬件上,不会有什么突破。
:     英文分词,比中文简单,但去干忧比中文复杂多了。在词相关性分析上,英文
: 也比中文难。
:      就像你所说的,用户要的是结果的准确性和返回速度。在这两点上和你说的
: “推广”跟本看不出有什么联系。
:      硬件水平都差不多。推广,只要有钱,都可以找专门的大公司去做。
: google,baidu在搜索市场领先了这么多年,一直被模仿,却从末被超越。为何?
: 核心部份还是算法。
:      现在SE技术中,无论是分词,分析词相关性,spider技术。无论哪项,只要那部份
: ...................





☆─────────────────────────────────────☆
   homy (Homy.so) 于  (Mon Dec 25 12:11:28 2006)  提到:

 我很赞同你的技术是根基的观点。特别是做网络技术的,真的很容易被模仿,能做到适合
大部分用户使用并且得到肯定,这里面真的要花很多心思去不断更新技术。
 推广也重要,但是技术质量始终是第一关。
【 在 servlet (nick) 的大作中提到: 】
:     现在全球做硬件的就那么几家:intel,sun,ibm……。SE用的硬件都是直接在那几家
: 买的。所以在硬件上,不会有什么突破。
:     英文分词,比中文简单,但去干忧比中文复杂多了。在词相关性分析上,英文
: 也比中文难。
:      就像你所说的,用户要的是结果的准确性和返回速度。在这两点上和你说的
: “推广”跟本看不出有什么联系。
:      硬件水平都差不多。推广,只要有钱,都可以找专门的大公司去做。
: google,baidu在搜索市场领先了这么多年,一直被模仿,却从末被超越。为何?
: 核心部份还是算法。
:      现在SE技术中,无论是分词,分析词相关性,spider技术。无论哪项,只要那部份
: ...................


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店