使用Xapian Omega搜索 - 使用通配符或正则表达式

时间:2016-08-16 18:50:49

标签: full-text-search search-engine xapian

我们正在为我们的研究面对不同的搜索引擎 档案和浏览了Xapian-Omega文档,我们 决定尝试一下,因为Omega选项似乎是一个 适当的解决方案,有几个有趣的搜索选项。

我们在Linux服务器(Deb 7)上安装了Xapian-Omega并进行了测试 设置成功。但是我们不确定如何做到 使用或甚至可以使用Wild Cards或Regular 表达与Xapian-Omega。

我们读到,对于Xapian,必须启用Wild Card选项 “QueryParser标志” 有人可以澄清一下吗? 即。用一两个例子解释或指出一个页面。

但我们没有看到有关Omega示例的更多信息 CGI,虽然后者运行良好,外卡选项 (例如*用于普通外卡和?作为单个字符), 似乎默认情况下没有按预期工作,他们会 有用的,即使词干和子串等可能是有用的。

例如:能够采用标准的简单方法会很有趣 wild char搜索具有一定的精度,例如: 医药*用于医药药品 还是用?单个字符

Regexp能否被Omega认可? 例如:sep [ae] r [ae] te(\ w +)? 或搜索电子邮件或信用卡等结构化格式 研究论文中的数字或某些公式类型等。

很久以前来自Olly Betts的一份说明(Dev Mailing List) 这个建议是grep索引文件,但这样做 击败欧米茄的RAD优势。

使用带有Wild Cards或Regular的Omega搜索的任何示例 表达式将是最受赞赏的...甚至表明 一个页面,其中提供了有关此主题的信息 以及说明如何开发高级搜索的示例 单独使用Xapian是非常受欢迎的(也许是PHP或Python)。

(我们并不关心最终的那一刻 指数大小或大幅增加 时间归档档案)

2 个答案:

答案 0 :(得分:0)

您可以使用$set{flag_wildcard,1}Omegascript documentation中所述)启用Omega中的右通配符(例如" medic *"),这将启用FLAG_WILDCARDusing wildcards上的用户手册中有一节。

Xapian并没有为正则表达式搜索提供支持,尽管从理论上讲我认为有可能支持,如果可能代价高昂(取决于正则表达式)。它必须针对数据库中未经过干扰的术语运行正则表达式,然后将它们提供给搜索。如果正则表达式扩展到很多术语(例如只是'作为正则表达式),那就变得困难了。在提高效率方面也有一些微妙之处;很容易通过术语列表跳转到具有常量前缀的内容,并且如果可能的话,您希望利用它。

对于sep[ae]r[ae]te(\w+)?的示例,听起来您确实需要spelling correction的组合(对于ae替换,您可以使用$set{flag_spelling_correction,1}启用)和stemming (对于' te'之后的尾随字母; Omega默认为英语词干,但是that can be changed),或者是通配符或部分匹配支持。

如果您的确需要使用正则表达式,那么我建议您在xapian-discuss mailing list上提出正则表达式。自上次讨论以来,Xapian一直在继续前进,我相信现在建立这样的支持比现在更容易。

答案 1 :(得分:0)

詹姆斯艾亚特:感谢您的回答和帮助,对此迟到的回复道歉,与其他工作分心。 我们已经看过Omegascript页面,但我们不清楚如何在CGI界面中使用这些选项。使用*似乎也适用于尾随字符,这是正确的吗?即不适用于内部词组,例如:omeg * ipt;在某些情况下,阻止选项是不够的。我们没有看到单个野生角色的选项,有时用?在某些搜索引擎中。你能在这里发表评论吗?

关于正则表达式的使用,我们已经想到它可能不像人们希望的那么简单。前一篇文章中提到的例子当然是简单的可能用途,当然还有更多。您对使用词干选项的评论似乎是合适的。

在某些情况下,为文本表单的提取启用某种类型的正则表达式选项可能会很有趣,例如提到的那些。这种文本的快速提取,可能与一些周围的文本一起可能非常有用。 我们一定会在邮件列表中尝试您的提案。

再次感谢你。