我有一个文档和一个查询字词。我想
例如
Text: I solemnly swear that I am upto no good.
Query: swear
Output: I solemnly MATCHSTART swear MATCHEND that I am upto no good.
假设我有多个查询字和一个大文档,现在我可以有效地执行此操作。
我确实浏览了互联网上的各种链接,但找不到任何非常确定或明确的内容。此外,这只是一个编程问题,与搜索引擎开发或信息检索无关。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
如果您的每个查询都是单词(某些子字符串,不包含SP / TAB / NL等),并且允许误报概率非常低(当您标记某些单词时,在查询集中省略) - 您可以使用布隆过滤器:http://en.wikipedia.org/wiki/Bloom_filter
首先,将查询单词加载到Bloom过滤器中,然后扫描文档,并匹配过滤器中的每个单词。如果搜索结果为肯定 - 请标记此单词。
您可以使用我对bloom过滤器的实现:http://olegh.cc.st/src/bloom.c.txt
答案 1 :(得分:0)
在Python中:
text = "I solemnly swear I am up to no good" #read in however you like.
query = input("Query: ")
text.replace(" "+query" "," MATCHSTART "+query+" MATCHEND ")
OUTPUT:
'I solemnly MATCHSTART swear MATCHEND that I am up to no good.'
你也可以使用正则表达式,但速度较慢,所以我只是使用字符串连接在单词的开头和结尾添加空格(以便不匹配“发誓”或“咒骂”或“运动装”。这是可以轻松翻译成您喜欢的任何语言。