探讨lucene检索优化
个人认为:
- 索引库具有的词语比较全面
- 用户输入的词增加在数据库中添加相应的次数
- 搜索的时候根据词语的次数权重排序
针对南京km的问题:
- 应该从html编辑器拿取的文本去除掉html标签,放进检索库
- 搜索的词语放进数据库做词语次数的统计
- 根据统计去索引库拿取词语权重搜索后,再用点击次数排列
应该从html编辑器拿取的文本去除掉html标签,放进检索库
用正则表达式把html标签去除
搜索的词语放进数据库做词语次数的统计(或许有更好的方法)
根据统计去索引库拿取词语权重搜索后,再用点击次数排列
关键词转成词语的数组后,需要去掉语气词,及单个字。
搜索词语权重代码例子:
Term term = new Term(IndexContants.FIELD_TITLE, keyWord);
FuzzyQuery fuzzyQuery = new FuzzyQuery(term);
float weight1 = (float)2000.0;
fuzzyQuery.setBoost(weight1);
query.add(fuzzyQuery, BooleanClause.Occur.SHOULD);
先根据词语权重搜索出来后,然后再点击次数排序,参考例子:
Collections.sort(updateList, new Comparator<FileEntity>() {
@Override
public int compare(FileEntity o1, FileEntity o2) {
return (int) ( o2.getViews() - o1.getViews());
}
});