客户要求的搜索功能
客户的仓库商品太多,商品名称也很多,搜索起来定位有点麻烦
前段时间说是让我们做一个模糊查询,不是目前这种简单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。
------解决方案--------------------
小应用直接自己做数据库的存储,分词用盘古。