Как реализовать / использовать анализатор в Xapian 1.4.5?

Я искал в Google, но не нашел никаких подсказок, касающихся реализации анализатора в Xapian, даже Xapian может не поддерживать использование анализатора, такого как lucene. Другими словами, я не могу распространяться на поддержку на китайском языке. Я прав?

Я искал в Xapian C++ API, нашел только TermGenerator, который может быть связан с извлечением слова. Есть флаг с именем FLAG_CJK_NGRAM, он может разделить слово UTF-8 CJK, скажем, ABCD, он разделит его на AB, BC, CD и A, B, C, D. Это очень просто и понятно. Я полагаю, мне нужно более точное решение, похоже, мне нужно внедрить или перенести зрелое решение (например, jieba) на Xapian. Я прав?

1 ответ

TermGenerator (и QueryParser, который идет рука об руку) поддерживает CJK-расщепление ngram, что, возможно, то, что вы ищете, добавив FLAG_CJK_NGRAM, Для TermGenerator это используется путем вызова set_flags(); для QueryParser вы передаете флаги parse_query() (это логическое ИЛИ в новых флагах с FLAG_DEFAULT иначе вы отключите функции, которые, вероятно, хотите сохранить).

Во всех других отношениях вы должны иметь возможность использовать Xapian как обычно, как в практическом примере из руководства "Начало работы". (Обратите внимание, что, хотя пример написан на python, он будет работать на других языках программирования и непосредственно из C++. Исходный код руководства по началу работы содержит примеры кода на некоторых других языках.)

Из документации FLAG_CJK_NGRAM:

С этим включением диапазоны символов CJK разделяются на униграммы и биграммы, причем униграммы несут информацию о положении. Не-CJK символы делятся на слова, как обычно.

Если вы хотите заняться чем-то другим, вам нужно написать собственный код генерации терминов и код разбора запроса.

Другие вопросы по тегам