全文搜索算法问题

l 问题描述:

用关键词在数据条目列表中搜索相关条目列表,并列出匹配字列表。算法如下:

将搜索关键词以字为单位分词,在数据中搜索相关条目,搜索出的条目排序规则:

1) 包含字最多的条目排在前面;同一字多次匹配只计数一次

2) 如果包含字数相同,条目短的排在前面

3) 如果包含字数相同且条目长度相同,条目中包含字的起止位置两边内容裁剪掉,包含各个字之间的全部内容替换为单个空格后,形成匹配浓缩内容,匹配浓缩内容短的条目排在前面。

4) 如果按照上述3条规则计算后位置相同的条目,则针对各个条目,计算匹配关键字在搜索关键词中首位置之和,首位置之和越小的条目排在前面

5) 如果不符合上述4条规则,需与数据条目列表的顺序保持一致

l 要求:

完成题目对应的程序模板(FulltextRetrieval)中的方法:

String[] query(String[] texts, String keyword);

该方法的入口参数texts为给定的数据条目列表,keyword为给定的关键词。

最后返回结果为字符串数组:数组中的每一个元素是一个字符串,字符串的构成格式是“数据条目,关键字1,关键字2,...”,就是把数据条目按要求排列,并把相关的关键字按关键字在给定的关键词中的顺序,拼接在相应的数据条目后面,使用英文逗号“,”作为分隔符。

l 样例:

样例1:

输入:[“石家营”,“老石营”],“石家营”

输出:[“石家营,石,家,营”“老石营,石,营”]

样例2:

输入:[“1石1营1”,“1石营11”],“石营”

输出:[“1石营11,石,营”,“1石1营1,石,营”]

posted @ 2024-04-02 14:27  理想与现实之争  阅读(4)  评论(0编辑  收藏  举报