0

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

我在 Xapian C++ API 中搜索,只找到可能与提取词有关的TermGenerator 。有一个flag FLAG_CJK_NGRAM,它可以分割UTF-8 CJK单词,比如说ABCD,它会分割成AB、BC、CD和A、B、C、D。这很简单直接。我想我需要一个更准确的解决方案,看来我需要实施或将成熟的解决方案(如jieba)迁移到 Xapian。我对吗?

4

1 回答 1

0

TermGenerator(和齐头并进的 QueryParser)通过添加FLAG_CJK_NGRAM. 对于 TermGenerator,这是通过调用set_flags(); 对于 QueryParser,您将标志传递给parse_query()(通常在带有 的新标志中使用布尔 OR FLAG_DEFAULT,否则您将关闭您可能想要保留的功能)。

在所有其他方面,您应该能够正常使用 Xapian,例如“入门”指南中的实际示例。(请注意,虽然该示例是用 python 编写的,但这将在其他包装语言中工作,并且直接来自 C++。入门指南的源代码包含其他一些语言的代码示例。)

从以下文档FLAG_CJK_NGRAM

启用此功能后,CJK 字符的跨度将分为一元组和二元组,一元组携带位置信息。非 CJK 字符照常拆分为单词。

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

于 2018-04-18T18:38:50.087 回答