正则表达式搜索引擎

7
有没有一个搜索引擎可以让我用正则表达式进行搜索?

字符类只能通过这种方式实现。 - Joris Geer
这很不错,但是正则表达式搜索不允许有效索引,并且会导致在互联网上线性搜索兆级别的页面。然而,对于特定网站上的文章或在StackOverflow上的帖子等较小的类别可能是可行的。 - Vortico
stackse - ren
7个回答

3

Google Code Search 允许您使用正则表达式进行搜索。

据我所知,没有类似的搜索引擎适用于一般搜索。


2
请注意,Google Code Search 已经被停用。 - MetaEd
这个问题的大多数答案现在已经过时了。Google Web Search现在也支持正则表达式 - Anderson Green

2

正则表达式在现实场景中的应用存在一些问题。其中最紧迫的问题是,您的正则表达式需要与整个缓存的互联网进行匹配,这将消耗大量的计算资源;由于正则表达式可能是无限制的(/fo*bar/),所以索引在正则表达式中几乎没有用处。


1

我没有特定的引擎可以建议。

然而,如果您可以接受正则表达式语法的子集,搜索引擎可以存储额外的标记以有效匹配相当复杂的表达式。Solr/Lucene允许自定义分词,同一个单词可以生成多个标记,并具有各种规则集。

我将以我的名字为例:“Mark marks the spot.”

不区分大小写并带有词干处理:(mark,mark,spot)

区分大小写且不带有词干处理:(Mark,marks,spot)

区分大小写并带有NLP同义词扩展:([Mark,Marc],[mark,indicate,to-point],[spot,position,location,beacon,coordinate])

现在朝着您的问题发展,不区分大小写,带有词干处理、去重和自动完成前缀匹配:([m,ma,mar,mark],[s,sp,spo,spot])

如果您想要“子字符串”样式匹配,它将是:([m,ma,mar,mark,a,ar,ark,r,rk,k],[s,sp,spo,spot,p,po,pot,o,ot,t])

一个单一的搜索索引包含所有这些不同形式的标记,并选择在每种类型的搜索中使用哪些标记。

让我们尝试使用正则表达式风格的文字"Missippi",并使用字面标记:[m,m?,m+,i,i?,i+,s,ss,s+,ss+...]等。

实际规则取决于正则表达式子集,但希望模式变得更清晰。您甚至可以进一步扩展以匹配其他正则表达式片段,然后使用一种短语搜索形式来定位匹配项。

当然,索引会非常大,但根据项目要求可能是值得的。您还需要查询解析器和应用程序逻辑。

我意识到,如果您正在寻找一个预制引擎,这并不能满足您的需求,但从理论上讲,这是我处理它的方式(假设这确实是一个要求!)。如果有人只想要子字符串匹配和灵活的通配符匹配,那么在索引中可以少用很多标记。

就预制应用而言,您可以查看OpenGrok,用于源代码索引,它不是完整的正则表达式,但对源代码的理解很好。


1

0

0
Globalogiq有一个HTML源代码搜索,您可以使用正则表达式进行搜索。但它不是免费的。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接