子query统计和重要子query识别
问题定义:
当query A切词后的term集是query B切词后的term集的真子集时,称query A为query B的子query,例如:
“刘德华”的切词结果为“刘德华”;
“刘德华电影”的切词结果为“刘德华 电影”;
“刘德华最新电影”的切词结果为“刘德华 最新 电影”;
“刘德华电影下载”的切词结果为“刘德华 电影 下载”;
根据以上切词结果,刘德华”是“刘德华电影”,“刘德华最新电影”, “刘德华电影下载”的子query;
“刘德华电影”是“刘德华最新电影”, “刘德华电影下载”的子query;
但是,“刘德华电影下载”和“刘德华最新电影”互相不是对方的子query。
现有亿级的用户query,并且知道每个query的查询次数,要求:
(1)列出一个query的全部子query,写出C语言实现。
(2) query中的不同term对这个query的重要性不同的,例如“刘德华 电影
下载”中“刘德华”和“电影”的重要性比“下载”重要,因为:“刘德华 电影“所表达的查询需求,与”刘德华 下载“或者”电影 下载“相比,更接近原query的需求。根据(1)中的统计的子query数据,请给出一种思路,来计算一个query中的所有子query的重要性排序。
如果认为子query数据的信息不够充分,请给出还需要哪些信息,以及获得这些信息的途径,给出算法思路描述,必要的符号和推理公式即可。