l 问题描述:
用关键词在数据条目列表中搜索相关条目列表,并列出匹配字列表。算法如下:
将搜索关键词以字为单位分词,在数据中搜索相关条目,搜索出的条目排序规则:
1) 包含字最多的条目排在前面;同一字多次匹配只计数一次
2) 如果包含字数相同,条目短的排在前面
3) 如果包含字数相同且条目长度相同,条目中包含字的起止位置两边内容裁剪掉,包含各个字之间的全部内容替换为单个空格后,形成匹配浓缩内容,匹配浓缩内容短的条目排在前面。
4) 如果按照上述3条规则计算后位置相同的条目,则针对各个条目,计算匹配关键字在搜索关键词中首位置之和,首位置之和越小的条目排在前面
5) 如果不符合上述4条规则,需与数据条目列表的顺序保持一致
l 要求:
完成题目对应的程序模板(FulltextRetrieval)中的方法:
String[] query(String[] texts, String keyword);
该方法的入口参数texts为给定的数据条目列表,keyword为给定的关键词。
最后返回结果为字符串数组:数组中的每一个元素是一个字符串,字符串的构成格式是“数据条目,关键字1,关键字2,...”,就是把数据条目按要求排列,并把相关的关键字按关键字在给定的关键词中的顺序,拼接在相应的数据条目后面,使用英文逗号“,”作为分隔符。
l 样例:
n 样例1:
输入:[“石家营”,“老石营”],“石家营”
输出:[“石家营,石,家,营”,“老石营,石,营”]
n 样例2:
输入:[“1石1营1”,“1石营11”],“石营”
输出:[“1石营11,石,营”,“1石1营1,石,营”]
标签:匹配,关键词,搜索算法,条目,问题,关键字,搜索,列表,全文 From: https://www.cnblogs.com/Alisa-zmj/p/18110515