如何在Xapian 1.4.5中实现/使用分析器?

时间:2018-04-17 10:39:39

标签: lucene xapian

我在谷歌搜索但没有找到任何与Xapian中的实施分析器相关的线索,甚至Xapian可能也不支持使用像lucene这样的分析器。换句话说,我不能用中文来支持。我是对的吗?

我在Xapian C ++ API中搜索过,只发现可能与提取词有关的TermGenerator。有一个名为FLAG_CJK_NGRAM的标志,它可以分割UTF-8 CJK字,让我们说ABCD,它将它分成AB,BC,CD和A,B,C,D。那个&#39 ;非常简单明了。我想我需要一个更准确的解决方案,似乎我需要实现或将成熟的解决方案(如jieba)迁移到Xapian。我是对的吗?

1 个答案:

答案 0 :(得分:0)

TermGenerator(和QueryParser,它们齐头并进)通过添加The current node list is empty. tbbc_money: currencies: ["UAH", "USD", "EUR", "PLN"] reference_currency: "USD" decimals: 2 storage: doctrine #ratio_provider: tbbc_money.ratio_provider.yahoo_finance ratio_provider: tbbc_money.ratio_provider.google 支持CJK ngram拆分,这可能是您正在寻找的。对于TermGenerator,通过调用set_flags()来使用它;对于QueryParser,您将标志传递给parse_query()(在FLAG_CJK_NGRAM的新标志中通常使用布尔值OR,否则您将关闭可能要保留的功能。

在所有其他方面,您应该能够正常使用Xapian,例如在“入门”指南的the practical example中。 (请注意,虽然示例是在python中,但它可以在其他包装语言中使用,并且直接来自C ++。The source code for the getting started guide在其他一些语言中有代码示例。)

来自FLAG_DEFAULT的文档:

  

启用此功能后,CJK字符的跨度将分为unigrams和bigrams,其中包含位置信息的unigrams。非CJK字符正常分为单词。

如果您想做其他事情,那么您目前必须编写自己的术语生成和查询解析代码。