1

これは私のコードです:

db = xapian.Database(path/to/database)
enquire = xapian.Enquire
stemmer = xapian.Stem(<supported language>)
query_parser = xapian.QueryParser()
query_parser.set_database(db)
query_parser.set_stemmer(stemmer)
query_parser.set_default_op(xapian.query.OP_OR)
xapian_flags = xapian.QueryParser.FLAG_BOOLEAN | xapian.QueryParser.FLAG_SYNONYM | xapian.QueryParser.FLAG_LOVEHATE
query = query_parser.parse_query('"this exact phrase"', xapian_flags)
enquiry.set_query(query)

これは「この正確なフレーズ」と一致しません (完全一致以外のほとんどすべてを達成できます)。ドキュメントに記載されている二重引用符を含めたことに注意してください。これを達成する方法はありますか?

4

1 に答える 1

1

クエリ パーサーにフラグを明示的に設定することで、デフォルトの をオーバーライドしますFLAG_PHRASE | FLAG_LOVEHATE | FLAG_BOOLEAN。したがって、同義語のサポートをオンにして、二重引用符が依存するフレーズ検索をオフにしました。

フレーズ検索は完全一致と厳密には同じではないことに注意してください。ただし、より多くのコンテキストがないと、これが状況に応じて間違ったアプローチであるかどうかを判断するのは困難です。

于 2012-07-28T16:59:08.517 に答える