做毕业设计时用lucene遇到的一些问题

1.IK分词器是否选择智能分词的问题:IK分词器的智能分词粒度是非常粗的,比如说对 "安阳市人民政府" 来进行分词,智能分词的分词结果是 [安阳市][人民政府]。而不使用智能分词的时候分词的结果是 [安阳市][安阳][市][人民政府][人民][民政][政府]。显然,在不考虑模糊匹配的情况下 当用户输入 "安阳",“人民”,“民政”,“政府” 等这些词的时候使用智能分词是不能够匹配的到的。只有输入“安阳市”或者是“人民政府”才能够匹配的到。应该说不通的分词算法有不同的使用场景,在我做毕业设计的时候没有用智能分词,因为老师测试的时候是把一句话拆分成许多关键字来分别输入测试的。当他输入的关键词屡屡查询不到的时候,就会质疑你这个搜索的功能做的不好。

2.给关键词加高亮的时候遇到的一些问题:我要对搜索结果中的文章标题和文章简介中命中的关键词加上高亮显示的功能,但是发现如果标题中没有包含用户输入的信息分词之后的关键字的话标题 内容还原之后就变成空了,简介中如果也不包含的话简介显示在页面上的也是空,后来查找API发现,原来HighLighter.getBestFragment(TokenStream, String);在进行高亮的时候如果输入的字符串包含相应的关键词的话就会返回高亮之后的结果,如果字符串不包含相应的关键词的话返回的是null,而不是返回原来的字符串,而我的程序是把从Document中得到的域值做为高亮的输入字符串了然后直接在页面上显示这个值了,所以,不包含关键词的域值就显示不出来了。这里只需要加一个判断,把高亮之后变为空的哪些值再重新设置为域的值返回即可, 虽然是个小问题,但归根到底是自己对API不熟悉,所以以后要加强学习。

原文地址:https://www.cnblogs.com/jiaoyiping/p/3070336.html