【问题标题】:Search using Xapian Omega - with Wild Cards or Regular Expressions使用 Xapian Omega 搜索 - 使用通配符或正则表达式
【发布时间】:2016-08-16 18:50:48
【问题描述】:

我们的研究面临着不同的搜索引擎 存档并浏览了 Xapian-Omega 文档,我们 决定尝试一下,因为欧米茄选项似乎是 具有几个有趣的搜索选项的适当解决方案。

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

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

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

例如:能够使用标准简单 具有一定精度的 wild char 搜索,例如: medic* for 医学 医学 药剂 或与?对于单个字符

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

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

使用带有通配符或常规的 Omega 进行搜索的任何示例 表达将不胜感激......甚至是一个迹象 一个很好地展示了关于这个主题的信息的页面 示例说明如何开发高级搜索 单独使用 Xapian 是最受欢迎的(也许是 PHP 或 Python)。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      再次感谢您。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-14
        • 1970-01-01
        • 2015-05-05
        • 1970-01-01
        • 1970-01-01
        • 2012-05-28
        • 2011-05-20
        • 2011-09-02
        相关资源
        最近更新 更多