【问题标题】:Search by probabilistic fields in Xapian and Python在 Xapian 和 Python 中按概率字段搜索
【发布时间】:2012-09-04 21:57:22
【问题描述】:

我打算这样做:

doc = xapian.Document()
doc.set_data(somedata)
..
..
doc.add_term("Ajohn doe")

假设前缀“作者”可用于文档作者。

现在我希望能够运行此搜索“searchterm AND author:john doe

这显然不起作用,因为“doe”被认为是作者的一部分(QueryParser 正在将其翻译为 “searchterm AND author:john OR doe”)。我应该这样做:

doc.add-term("Ajohn_doe")

并通过“searchterm AND author:john_doe”进行搜索?一般来说,搜索带有空格的文本是否有任何替代方法?

【问题讨论】:

    标签: python xapian


    【解决方案1】:

    最常见的方法是添加术语AjohnAdoe(可能使用Xapian 的TermGenerator,它会为您进行分词和术语创建)。完成此操作后,您可以运行搜索 author:"john doe"(前缀短语搜索,它将能够搜索多个术语)。类似于以下内容:

    import xapian
    db = xapian.WritableDatabase("my-db", xapian.DB_CREATE_OR_OPEN)
    tg = xapian.TermGenerator()
    
    doc = xapian.Document()
    tg.set_document(doc)
    tg.index_text("John Doe", 1, "A")
    db.add_document(doc)
    
    qp = xapian.QueryParser()
    qp.add_prefix("author", "A")
    q = qp.parse_query('author:"John Doe"')
    
    enq = xapian.Enquire(db)
    enq.set_query(q)
    for match in enq.get_mset(0, 10):
        print "%8.8i: %f" % (match.docid, match.weight,)
    

    (针对半新的 Xapian 主干进行了测试,尽管我认为这里没有什么特别新的东西。)

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 2011-10-21
      • 2016-11-23
      • 2022-01-25
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多