日期:2014-05-17  浏览次数:20531 次

客户要求的搜索功能
客户的仓库商品太多,商品名称也很多,搜索起来定位有点麻烦

前段时间说是让我们做一个模糊查询,不是目前这种简单like形式的模糊搜索,

比如搜索商品名“思科150M无线路由器” 客户想通过输入“思科器”或者“思M由”亦或“10线由” 等等 不连续的字符定位到相关的商品

我想这种搜索各大搜索引擎应该做的比较好,觉得棘手,
产生第两种方案:1.让客户分两次搜索筛选(感觉根本提高不了效率,淘汰)
  2.客户搜索时候输入商品名称不连续的字符以空格隔开,如上例中的“思科器”就是“思科 器”,“科1线由”就是“科 1 线 由”,再对字符串进行拆分,之后用 and like 查询(感觉这样,效率也提高不是太多,并且用户体验不好)


数据库和编程基础都不咋扎实,望前辈们赐教 效率更高的方法

------解决方案--------------------
这种只能做分词再用LIKE了。看看盘古分词 

------解决方案--------------------
最笨的方法 把要搜索的 所有字段 全部 拼接起来 然后再like
------解决方案--------------------
不好意思 没注意 看后面说到的 组合型关键字 路过....刚才我回复的跟这个 不搭边 无视它吧
------解决方案--------------------
最简单的办法就是:
新增加一个字段,专门存储所有的搜索关键字,多个用逗号隔开。
搜索的时候,就用这个字段为基准进行搜索判断。
------解决方案--------------------
客户真麻烦 抽他
------解决方案--------------------
你用的什么数据库?
oracle中的oracle text manager 可以直接分词检索,非常简单,只是切词不太准,词库也太老。不过一般性的应用没问题的。

sqlserver中没研究过,应该是差不太多。

用lucene.net之类的引擎,性能好,就麻烦一些,要编太多程,小应用不推荐。

------解决方案--------------------
用lucene.NET做索引吧。Lucene.NET是Apache的License,随便用随便改随便商业的。
再加上盘古分词或者直接用内置的CJK。
------解决方案--------------------
小应用直接自己做数据库的存储,分词用盘古。