SQLite, FTS, MATCH и разделение текста в столбце - PullRequest
0 голосов
/ 07 июля 2011

У меня есть база данных SQLite с виртуальной таблицей «myTable», созданной с использованием FTS4, с одним столбцом «myColumn» текста с использованием | в качестве разделительного символа.

Я запрашиваю эту базу данных с помощью SELECT * FROM myTable WHERE myColumn MATCH 'out to'; и получаю хиты с записями, которые выглядят как "...out|to...", но без подстрок "out to".

То же самое происходит, когда я заменяю | на знаки препинания, такие как ;. (Обратите внимание, что документы SQLite явно указывают, что вы не можете использовать _ в качестве разделительного символа.)

Почему это так и как мне это предотвратить?

1 Ответ

1 голос
/ 26 октября 2011

Токенайзер FTS по умолчанию удаляет любую пунктуацию из индексированных данных, а также из вашего входного запроса Он найдет совпадение для записи "... out to ...", даже если вы запросите MATCH 'out/to' Решением этой проблемы является поиск по фразе MATCH '"out to"'. Это не сработает, если вы хотите найти эти слова в записи, в которой они отсутствуют в этом порядке.

...