как выполнить полнотекстовый поиск с помощью sqlite fts3 - PullRequest
2 голосов
/ 11 февраля 2011

Я скомпилировал модуль fts3 для sqlite3.6.2.Как построить виртуальную таблицу и выполнить поиск по некоторому полю существующих таблиц (например, content: string в твитах)?Поддерживает ли ft3 нечеткий поиск?(Я проверил документацию, но все еще оставался в замешательстве ...).

1 Ответ

2 голосов
/ 11 февраля 2011

Вы можете сделать что-то простое, чтобы выполнить поиск по 2 полям.Вы должны использовать союзы.

string createSql = "CREATE VIRTUAL TABLE TweetFts USING FTS3(TweetId, Title, Description)";

string insertSql = "INSERT INTO TweetFts (TweetId, Title, Description) 
     SELECT TweetId, Title, Description FROM Tweet";

string sql = @"select TweetId from TweetFts where Title match '" + allWords + "'";
sql += " union ";
sql += @"select TweetId from TweetFts where Description match '" + allWords + "'";
sql += " union ";
sql += @"select TweetId from TweetFts where Title match '""" + exactMatch + @"""'";
sql += " union ";
sql += @"select TweetId from TweetFts where Description match '""" + exactMatch + @"""'";

Запустите этот запрос, и у вас есть список совпадающих твитов.

Я не вижу ничего нечеткого, кроме поиска префикса с использованием *.

Есть функция soundex.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...