开发者社区> 问答> 正文

lucene怎么针对特殊字符做分词,或者是做索引??报错

/**
* 初始化参数
*/
private MyLucene() {
System.out.println("...初始化开始...");
index_file = new File("E:\\lucene-index");//索引文件建立
analyzer = new IKAnalyzer();//使用Analyzer做分词
havapath = (index_file.list().length>=0);//判断是否有文件
parser = new QueryParser(Version.LUCENE_35, LucenceVo.TITLE,analyzer);//构造查询器,默认索引属性TITLE
}

展现部分代码~~

searcher = new IndexSearcher(reader);
System.out.println("值时=》:    "+keyword);
keyword = QueryParser.escape(keyword);
System.out.println("值时=》:    "+keyword);
Query query =parser.parse(keyword);
以上代码主要是把关键字的特殊符号转义,若转义之后,就不会报错,如“-”转义之后就是“\-”了。然后这样查询“-”就会查询不到。 怎么把特殊符号做分词还是查询呢?

展开
收起
爱吃鱼的程序员 2020-06-22 20:04:52 662 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    IK不是可以自定义扩展词典吗加一行不就得了IK?怎么实现?可以说说具体的吗? 或者是加什么?你看看IK的IKAnalyzer.cfg.xml文件,就是来做词典配置的,可以配置ext_dict和ext_stopwords比如我输入“-”简历索引之后,然后输入“-”做查询就查询不到的~还是有点不明白哦,我是直接用的analyzer=newIKAnalyzer();//做分词,没有xml文件,怎么拓展?难道是自定义分词吗?还是有点不明白哦,我是直接用的<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">analyzer=newIKAnalyzer();//做分词,没有xml文件,怎么拓展?难道是自定义分词吗?

    是的,就是自定义分词

    好像在API中也是可以扩展的,看你自己想怎么用了是不是lucene把特殊字符给处理掉了比如是隐藏了~去看官方文档回复<aclass='referer'target='_blank'>@杨密:IKAnalyzer的文档是中文的。呵呵官方文档老是英文的都要看一会~现在只能做成自定义分词了<spanstyle="font-family:Verdana,sans-serif,宋体;font-size:14.44444465637207px;line-height:normal;background-color:#FFFFFF;">在IKAnalyzer.cfg.xml新增了一个字典里面放﹌,结果没效果啊

    2020-06-22 20:05:09
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载