日期:2014-05-20  浏览次数:20681 次

除了这个分词搜索和相关推荐,我心里的这块大石头压了我很久了,请大家帮帮忙
什么数据库,什么语言,都无所谓,关键是正确的思路。

我很想学习一下http://www.lightinthebox.com/index.php?main_page=advanced_search_result&inc_subcat=1&search_in_description=0&light_select=0&keyword=silver-black-gray 

我的基本推断应该是,一张词库表,一张词库ID和产品ID的关联表 
首先说一下我总结的一些规律: 
1. 逗号,句号,下划线等字符都换成空格(因为'card-phone cell head'和'card-phone,,,cell head'找到的结果都一样) 
2. 按照空格把字符串分隔成各个单词,再对每一个词去搜索,把搜索结果union起来(因为'card phone cell head'和'cell head card phone',顺序不一样,但结果是一样的) 


但是疑问一:silver black gray cell 得到的结果和 silver black gray cell phone得到的结果是一样的,但是单纯的phone搜索,有40多页的结果,也就是,不能完全把每一个词分开,再把搜索结果union起来。 
疑问二:silver black gray cell得到的第一个搜索结果是产品W08 Quad Band Watch Style Cell Phone Black - silver - gray SZR106 ,而且它包含了前3个单词,也就是它更符合搜索条件,这个怎么弄呢?难道搜索词库不仅仅是每一个词的库,还包括所有词汇的22组合,或者33组合,这样,数据库的量级,mysql还能承受么?就算我把各个组合的词汇都放进词库表了,那么怎么用php或者C#还要分析出某一个长词汇的先后顺序,比如silver black gray cell,我要分析出来,先查询silver black gray(因为该词汇有产品关联),再按照black gray或者gray cell来查询。。。。oh,my god。 

疑问三:这个东东应该不会用到Like查询了吧,那么所有产品的详细名字都要记录到词汇表里面么? 
比如这个产品 
W08 Quad Band Watch Style Cell Phone Black - silver - gray SZR106找到唯一的它 
W08 Quad Band Watch Style Cell Phone Black - silver - gray还是只有它 
W08 Quad Band Watch Style Cell Phone能找到名字都是这个开头的3个产品了 
这个到底是不是like查询啊,oh,my god. 

疑问四:刚刚这个搜索W08 Quad Band Watch Style Cell Phone的到如下的: 
Related Searches: Quad Band, Quad Band Watch, Quad Band Cell, Quad Watch Phone, Quad Cell Phones, Quad Band Phone, Quad Band Watch Phone, Quad Band Cell Phones, Quad Band Cell Phone 

这个应该不完全是程序上的字符串分析组合,还包括了,每分析出一个,就要到数据库判断有没有相应记录,oh,my god,有那么复杂么?查询速度还那么快? 

请大家和我一起来研究啊,或者有经验的前辈来指点一下我。。。

------解决方案--------------------
探讨
分词搜索,难道这辈子都研究不出来了么,唉。。。

------解决方案--------------------
有位仁兄专门研究中文分词搜索
你可以去看看,请教一下
------解决方案--------------------
分词算法可以参考一下计算语言学方面的资料
------解决方案--------------------
分词算法可以参考一下计算语言学方面的资料