0

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

我们在 Linux 服务器(Deb 7)上安装了 Xapian-Omega,并成功测试了设置。但是,我们不确定如何在 Xapian-Omega 中使用或什至启用通配符或正则表达式。

我们读到,对于 Xapian,必须启用通配符选项“QueryParser flags”有人可以澄清一下吗?IE。用一两个例子解释或指出一个页面。

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

例如:能够使用具有一定精度的标准简单野生字符搜索会很有趣,例如:medic* 用于医学医学药物或使用?对于单个字符

Omega 可以识别 Regexp 吗?例如:sep[ae]r[ae]te(\w+)? 或搜索结构化格式,例如电子邮件或信用卡号码或研究论文中的某些公式类型等。

在 Olly Betts 很久以前(开发邮件列表)的一份说明中,关于这个建议是 grep 索引文件,但这会破坏 Omega 的 RAD 优势。

任何使用带有通配符或正则表达式的 Omega 进行搜索的示例都将不胜感激......即使是一个页面的指示,该页面的有关此主题的信息也很好地展示了如何单独使用 Xapian 开发高级搜索的示例(PHP或者 Python 可能)。

(我们暂时不担心索引大小或索引存档时间的最终大幅增加)

4

2 回答 2

0

James Ayatt:感谢您的回答和帮助,对于这个迟来的回复,我对其他工作的干扰,我深表歉意。我们已经看过 Omegascript 页面,但不清楚如何在 CGI 界面中使用这些选项。另外 * 的使用似乎是用于尾随字符,对吗?即不适用于内部单词组,例如:omeg*ipt;在某些情况下,词干选项是不够的。我们没有看到单个野生字符的选项,有时用 ? 在某些搜索引擎中。你能在这里发表评论吗?

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

在某些情况下,启用某种类型的正则表达式选项来提取文本表单可能会很有趣,例如上面提到的那些。快速提取此类文本,也许连同一些周围的文本可能非常有用。我们一定会通过邮件列表尝试您的建议。

再次感谢你。

于 2016-08-19T21:02:21.993 回答
0

$set{flag_wildcard,1}您可以使用(在Omegascript 文档中介绍)在 Omega 中启用右通配符(例如“medic*”),这将启用FLAG_WILDCARD. 用户手册中有一节介绍了使用通配符

Xapian 不提供对正则表达式搜索的支持,尽管理论上我相信它是可能的,如果可能成本高昂(取决于正则表达式)。它必须针对数据库中的未提取词条运行正则表达式,然后将它们输入到搜索中。变得困难的地方是,如果正则表达式扩展到很多术语(例如,只是 'a' 作为正则表达式)。使其高效也有一些微妙之处。很容易通过术语列表跳转到具有恒定前缀的内容,如果可能的话,您希望利用它。

对于您的示例sep[ae]r[ae]te(\w+)?,听起来您实际上想要拼写更正(对于 ae 替换,您可以使用 启用$set{flag_spelling_correction,1})和词干(对于 'te' 之后的尾随字母;欧米茄默认为英文词干,但这可以是已更改),或者通配符或部分匹配支持。

如果您的用例确实需要正则表达式,那么我建议您在xapian-discuss 邮件列表中提出它。自上次讨论以来,Xapian 已经继续前进,我相信现在建立这样的支持会比当时更容易。

于 2016-08-17T10:03:56.287 回答