早几天写的文章那里,对域名的搜索那里 http://kernaling-wong.iteye.com/blog/2212191 ,这几天经过实践,有了新的认识所以想补充一下.
简单说说上个文章表达的,其实就是对域名进行搜索,比如输入it.com ,则不希望出现类似 it.com.cn 这样的域名, 只会搜索出 xxx.it.com 这样的域名.
我上个文章说 把域名进行反转,比如索引 www.it.com 则索引成 moc.ti.www (索引按 solr 说法,不是 onText 而是 string 类型, 按 lucene 说法则是 stringField 而不是 textField 了.) ,然后搜索也反转成这样,最后通过前缀匹配. 则可以满足其要求.
但最近这几天实践,发现这样有一个严重的问题.比如现在有 www.hao123.com 这一个域名, 但我搜索 123.com 其实一样能搜索出来的. 而自己细想了一下,这个的确也是能搜索出来.因为只是匹配而已,并没有识别出是否整体地被匹配了.
所以其实我上个文章写的那种方式就是出现这一个问题了.我后来试想了一个办法.既然可以前缀匹配了,那是不是可以把这一个域名的字段变成 onText 然后按 term 这样子位置整体前缀匹配呢?
1 . www.hao123.com =反转域名后=> moc.321oah.www 然后按 term分词后变成 moc , 321oah ,
2 . 然后我想通过前缀匹配 + 搜索短语,类似搜索语法是 : "moc.321oah.www"*
3. 经过实验和测试,这种方式不行,看来前缀匹配只能匹配每一个 term 但不按类似短语这样子匹配起来.
这几天,一直都忙着这一个事情,又看源码,又找相关资料,这种方式,最后还是不行的.
最后,我的上司建议我通过一种比较取巧的办法,因为现在数据主要还是国内的数据,域名基本上就是 .com.cn , org.cn , net.cn , com.hk 之类几种域名,所以我们在分词那里做一个改动,就是把这类域名的,就作为一个词了 ,即 www.it.com.cn 分词后变成 www , it , com.cn 就这三个,这样就能解决上面的问题了.,而且改动也不大. 在索引的时候,对新的数据,另外开了新一个索引字段,然后 使用了新的分词,旧的字段依然存在,也使用以前 的分词方式,这样就能保证了旧的数据也能搜索出来,新的数据也可以搜索出来了,兼容了新旧数据.
经过前几天, 觉得自己还要非常多地方要学习. 加油吧.
本文探讨了在搜索引擎中对域名进行精确搜索的方法,最初通过反转域名并使用前缀匹配实现过滤,但发现这种方法存在局限性。经过深入研究和实践,提出了一种新的解决方案,将域名字段转换为全文检索类型,通过分词和短语匹配来准确搜索目标域名,最终通过调整分词策略和创建兼容新旧数据的索引方案,实现了高效且全面的搜索功能。
564

被折叠的 条评论
为什么被折叠?



