2 に答える
Hai Feng Kao の character tokenizer を試してみてください。接頭辞、接尾辞、およびその間のすべてを検索できます。中国語にも対応しています。任意の部分文字列検索をサポートするトークナイザーは他にないと思います。
ところで、それは恥知らずな自己宣伝です。
character
Objective-C でトークナイザーによってエンコードされたデータベースを開く場合は、次の手順を実行します。
#import <FMDB/FMDatabase.h>
#import "character_tokenizer.h"
FMDatabase* database = [[FMDatabase alloc] initWithPath:@"my_database.db"];
if ([database open]) {
// add FTS support
const sqlite3_tokenizer_module *ptr;
get_character_tokenizer_module(&ptr);
registerTokenizer(database.sqliteHandle, "character", ptr);
}
FMDB の FMSimpleTokenizer を試すこともできます。FMSimpleTokenizer は組み込みの CFStringTokenizer を使用し、Apple のドキュメントによると、「CFStringTokenizer を使用すると、言語に中立な方法で文字列を単語、文、または段落にトークン化できます。単語をスペースで区切らない日本語や中国語などの言語をサポートしています」
FMSimpleTokenizer コードを確認すると、CFStringTokenizerAdvanceToNextToken と CFStringTokenizerGetCurrentTokenRange を呼び出すことによって行われていることがわかります。
興味深い「事実」の 1 つは、CFStringTokenizer がどのように中国語の単語をトークン化するかということです。まったく結果がありません!
その場合、おそらく Hai Feng Kao の sqlite トークナイザーのようなトークナイザーを作成する必要があります。