基本的要求是对给定的一个文本块进行关键字匹配,进行匹配的关键字是多个,而且可能非常多(成千上万),然后输出各个匹配到的关键字的位置。这可用用作关键字的高亮显示,当然也可用进行敏感词过滤。
参考linux命令行fgrep
输入一段文本,输出匹配到的关键字在输入文本中的位置。
例如,关键词列表:
# 关键字 类型(可选)
安居客 公司名称
二手房 通用名词
待查询文本为:
安居客,是安居客集团旗下国内最大的专业二手房网站。自2007年上线至今的短短4年时间里,安居客凭借其“专业二手房搜索引擎”的核心竞争力在业内独树一帜。通过对用户需求的精准把握、海量的二手房房源、精准的搜索功能、强大的产品研发能力,为用户提供最佳找房体验。目前,安居客的足迹已经遍布全国超过29个城市,注册用户超过1000万。
输出结果为:
[
(安居客, 公司名称, 0),
(二手房, 通用名词, 69),
(安居客, 公司名称, 134),
(二手房, 通用名词, 161),
(二手房, 通用名词, 275),
(安居客, 公司名称, 392)
]
这里我们要求待匹配的关键字列表相对稳定,在进行文本查询之前要准备好。对多组关键字列表的检索可用采用多个服务实例的方案。
服务名称:mss
- text 待搜索的文本
-
True 文本中包含有关键字列表中任何一个关键字
-
False 文本中不包含关键字列表中任何一个关键字
-
text 待搜索的文本
-
fmt` 设定返回结果的格式。缺省为返回匹配到的关键字和该关键字在文本中的起始位置
kw
- 返回匹配到的关键字idx
- 返回匹配到的关键字在文本中的起始位置type
- 返回匹配到的关键字在字典中定义的类型
返回结果为匹配到的关键字列表。例如当fmt=kw,idx,type
时,返回格式为
[
("安居客", 0, 公司名称),
("二手房", 69, 通用名词),
("安居客", 134, 公司名称),
("二手房", 161, 通用名词),
("二手房", 275, 通用名词),
("安居客", 392, 公司名称)
]