如何将搜索字符串与python中的内容匹配

2024-10-06 19:14:47 发布

您现在位置:Python中文网/ 问答频道 /正文

通常,当我们搜索时,我们有一个故事列表,我们提供一个搜索字符串,并期望返回一个给定搜索字符串与故事匹配的结果列表。在

我想做的恰恰相反。给出一个搜索字符串和一个故事的列表,找出哪个搜索字符串与该故事匹配。在

现在这可以用re来完成,但是这里的情况是我想使用solr支持的复杂搜索查询。query syntax here的完整详细信息。注意:我不会使用boost。在

基本上,我想在下面的示例代码中为doesitmatch函数获取一些指针。在

def doesitmatch(contents, searchstring):
    """
    returns result of searching contents for searchstring (True or False)
    """
    ???????
    ???????


story = "big chunk of story 200 to 1000 words long"
searchstrings = ['sajal' , 'sajal AND "is a jerk"' , 'sajal kayan' , 'sajal AND (kayan OR bangkok OR Thailand OR ( webmaster AND python))' , 'bangkok']

matches = [[searchstr] for searchstr in searchstrings if doesitmatch(story, searchstr) ]

编辑:此外,还想知道是否存在将如下lucene查询转换为正则表达式的模块:

^{pr2}$

Tags: orandof字符串列表forcontents故事
3条回答

可能很慢,但很容易解决:

对故事加上每个字符串对搜索引擎进行查询。如果它返回任何内容,则匹配。在

否则,您需要自己实现搜索语法。如果其中包括“标题”之类的内容,这可能会相当复杂。如果您的示例中只有AND和OR,那么它是一个递归函数,它并不复杂。在

不久前,我在寻找lucene的python实现,偶然发现了一个纯粹基于python文本的研究引擎Woosh。也许它能满足你的需要。在

你也可以试试pyLucene,但我没有调查这个。在

经过大量的谷歌搜索,我意识到我要做的是布尔搜索。在

找到了使regex布尔可识别的代码:http://code.activestate.com/recipes/252526/

这个问题现在看来已经解决了。在

相关问题 更多 >