作者TonyQ (沉默是金)
看板Ajax
标题Re: [讨论] 前阵看到一个Ajax搜寻的Case
时间Sun May 17 23:51:55 2009
※ 引述《Kelunyang (可伦)》之铭言:
: : 将已取得的结果集筛选後传回(如果是 filter),
: : 将目前缺少的集合部份用新的 query 下去取然後合并至目前的(如果是拓展)
: 如果要作中文全文搜寻的话,之前看过DB版深蓝站长大大说过一种
: 用空间换取时间的方法,就是把中文关键字拆解成一张资料表,到
: 了要搜寻的时候可以藉由WHERE查询比LIKE快(在目前中文全文搜寻
: 机制仍然不理想的情况下的作法)
: 那这样是不是类似gpmm大的说法,就事先作好很多的View存下来先前的查询结果
: 然後再进一步的作filter就好了呢?(还是我误会的gpmm大的意思)
: 有大大是真的这样做吗?总觉得会把资料库规画搞得很复杂
真的要用关键字 , 我玩过 Compass 的玩法 .
(本质是lucene底,只是包装过介面 , 是java体系的东西.)
他是怎麽玩咧 , 基本上他是用所谓 resource 的机制 .
每一笔资料要设定某一特定主值 (通常就是 db table的 pk) ,
然後对内文做中文断词 (那时用的是庖丁这套大陆分词系统) ,
按照 key , words 的配对模式存到索引档里面去.
(只是概念上 , 这是文件上写的 , 实际存法我没研究. XD)
然後查询时 , 也要针对查询的关键字用一样的断词系统先断过一次 ,
再针对被断词後的关键字"群" ,
在索引档中做查询跟评分动作 , 跳出分数高的来列出 pk ,
你可以再针对这些 pk 去查出detail的资料.
(是也可以直接把所有资料存进去啦:p)
我想 , 要自己实做的话 , 不外乎就是这些流程 ,
只是 compass 是有跟我们用的 OR-Mapping (也就是Hibernate) 介接 ,
所以我们资料表有新增资料时它会自动build index ,
删除资料时也会自己 update , 所以操作起来非常愉快. XD
btw , 要自己实作的话 , 当然还是以档案 io 为主最快了...
ps. 前两天我玩了一下 ms sql server 2008 的全文检索 ,
虽然说效果可能没有非常好 , 但是感觉似乎还算是可以接受...
--
至於文章中引用搜寻引擎的细节 , 有兴趣再讨论吧 . XD
这里毕竟是ajax版
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.78.140
※ 编辑: TonyQ 来自: 221.169.78.140 (05/18 03:14)