我有一本字典是这样的
"奥铃"字样
"奥铃TFR"车窗标识
"北京奥铃汽车"标牌
"福田"标志
"福田奥铃"标识
"福田汽车"标牌
"警告"标识
"快运I"标识
"快运II"标识
"欧Ⅱ"标识
"欧Ⅲ"玻璃贴
"欧马可"字样

里面大概有20万条数据,我想输入一段话,把里面,包含我字典中的词语,都查询出来。
求各位大虾指点,用trie实现,最好有源码,嘻嘻。谢谢各位了。

解决方案 »

  1.   

    http://www.paitoubing.cn/blog/php-trie-mmseg
      

  2.   

    你这个是多字符串查找的问题,在《程序员实用算法》的查找那一章里面的“多字符串查找”那一节里面介绍了个基于自动状态机实现的多字符串查找算法(AC自动机)。我查找了下关于trie的情况,好像这个是一种树结构,不过跟构建AC自动机差不多,应该是一个意思。
    具体就是利用这些字符串的公共前缀,以及后缀与其他字符串的前缀的最大重叠部分。
    利用公共前缀比较好理解,后缀与前缀重叠部分,其实就是当前字符串匹配失败后,要跳转到哪个字符串去继续匹配。比如,当前是在abcd上匹配,然后来了个e,但是我要找的字符串里面没有abcde,但是有cdeaa字符串,那么就可能跳转到cde上去往后面匹配。
    具体代码可以参考:http://blog.csdn.net/wenfengmtd/article/details/5220620
    这个代码《程序员实用算法》附带的代码,不过是用C语言实现的,不要用c++的编译方法去编译。可以用CC编译,你修改下应该可以用吧。
    《程序员实用算法》可以从http://ishare.iask.sina.com.cn/search.php?key=%B3%CC%D0%F2%D4%B1%CA%B5%D3%C3%CB%E3%B7%A8&from=index&format=
    下载。你看看是否对你有用。