突出显示文档中的查询词

时间:2014-01-07 21:47:49

标签: algorithm

我有一个文档和一个查询字词。我想

  1. 在文档中查找查询字词。
  2. 使用特定文本标记填充每次出现的查询字词。
  3. 例如

    Text:   I solemnly swear that I am upto no good.
    Query:  swear
    
    Output: I solemnly MATCHSTART swear MATCHEND that I am upto no good.
    

    假设我有多个查询字和一个大文档,现在我可以有效地执行此操作。

    我确实浏览了互联网上的各种链接,但找不到任何非常确定或明确的内容。此外,这只是一个编程问题,与搜索引擎开发或信息检索无关。

    任何帮助将不胜感激。谢谢。

2 个答案:

答案 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.'

你也可以使用正则表达式,但速度较慢,所以我只是使用字符串连接在单词的开头和结尾添加空格(以便不匹配“发誓”或“咒骂”或“运动装”。这是可以轻松翻译成您喜欢的任何语言。