我在谷歌搜索但没有找到任何与Xapian中的实施分析器相关的线索,甚至Xapian可能也不支持使用像lucene这样的分析器。换句话说,我不能用中文来支持。我是对的吗?
我在Xapian C ++ API中搜索过,只发现可能与提取词有关的TermGenerator。有一个名为FLAG_CJK_NGRAM
的标志,它可以分割UTF-8 CJK字,让我们说ABCD,它将它分成AB,BC,CD和A,B,C,D。那个&#39 ;非常简单明了。我想我需要一个更准确的解决方案,似乎我需要实现或将成熟的解决方案(如jieba)迁移到Xapian。我是对的吗?
答案 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字符正常分为单词。
如果您想做其他事情,那么您目前必须编写自己的术语生成和查询解析代码。