Python基于re库实现简易搜索引擎And Query查询词提取
简易搜索引擎And查询提取实现
And查询是查询串中既不属于双引号包裹的短语片段、也不属于感叹号引导的排除片段的无特殊标记检索词。
你现有代码已经完成短语查询、非查询的提取,无需改动原有逻辑,只要将原查询串中两类特殊查询对应的片段全部移除,再对剩余内容做切分清洗,就能得到完整的And查询列表。
完整可运行代码
import re query = input() # 原有提取逻辑保持不变 phrase_query = re.findall(r'"([^"]*)"', query) not_query = re.findall(r'!(\w+)', query) # 提取And查询 # 1. 移除所有带双引号的短语查询片段 processed_str = re.sub(r'"[^"]*"', ' ', query) # 2. 移除所有带感叹号的非查询片段 processed_str = re.sub(r'!\w+', ' ', processed_str) # 3. 按空白切分、过滤空值,得到And查询列表 and_query = [term for term in re.split(r'\s+', processed_str.strip()) if term] print(phrase_query) print(not_query) print(and_query)
测试效果
传入示例查询"global warming" worldwide !USA时,输出结果为:
['global warming'] ['USA'] ['worldwide']
该逻辑兼容复杂查询场景,比如传入"carbon emission" "new energy" china europe !coal !oil,可正确提取:
- 短语查询:
['carbon emission', 'new energy'] - 非查询:
['coal', 'oil'] - 与查询:
['china', 'europe']
如果需要支持带连字符、特殊字符的检索词,只要调整正则中匹配词的规则部分即可,整体处理流程不需要改动。
内容的提问来源于stack exchange,提问作者Alireza Tehrani
相关产品推荐
相关产品推荐

