假设有一文章表,字段content存有文章内容,但是内容为cke这样的编辑器生成的带有格式的,比如a标签等等,先需要一个全文搜索功能,请教各位如何在搜索时排除标签里的内容?比如img的src中包含日期例如2012,但我搜的2012只需要文章正文中出现。另外,搜索结果页面进行了关键字附近文本的显示,这个显示的时候又如何排除标签?

解决方案 »

  1.   


    正则可以在mysql语句中使用吗?如果不行岂不是会很麻烦
      

  2.   

    你怎么做的中文全文检索?用mysql加插件实现?还是使用第三方引擎?mysql本身不支持中文全文检索,如果要实现需要将汉字转为区位码或者用插件来实现。使用mysql加插件的方法,你可以再增加一个字段用来存储无标签的文本内容。意思就是把原本有标签的那个字段读出来去掉标签后再存储到一个新字段用来做检索用。使用第三方引擎,如sphinx,它会帮你处理这些问题。你只要按照它的规范给他提供数据文件就可以了。mysql是支持正则查询的,regexp子句。但无法进行replace操作。
      

  3.   

    #4可行。
    我的项目虽然没有增加字段,但另增加的表(该表ID与待检索的表一一对应)来存储FULLTEXT文本。
    另外是将汉字转化成Unicode编码(当然区位码也可以,但是转换有点麻烦),因为mysql不支持中文全文检索。
      

  4.   

    楼上两位,你们描述的方法并没有解决楼主的问题!
    位于html标记中的关键字依然会被找到
    如果是预先去除了html标记的话,被匹配的关键字就无法在原文档中定位了虽然目前mysql不支持中文全文检索,但并不排除以后会支持
    况且楼主也没有说一定是中文
      

  5.   

    呃,是各位想复杂了么?搜索跟检索有区别么……由于是小新闻站,数据量不大,只有几千条记录,并没有使用索引,而且不考虑多个关键词和分词的问题,只是用普通的like %keyword%进行了处理,速度可以接受,只是标签问题尚未解决……