123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- # 2014 Jan 08
- #
- # The author disclaims copyright to this source code. In place of
- # a legal notice, here is a blessing:
- #
- # May you do good and not evil.
- # May you find forgiveness for yourself and forgive others.
- # May you share freely, never taking more than you give.
- #
- #***********************************************************************
- #
- # Tests focused on phrase queries.
- #
- source [file join [file dirname [info script]] fts5_common.tcl]
- set testprefix fts5origintext2
- # If SQLITE_ENABLE_FTS5 is not defined, omit this file.
- ifcapable !fts5 {
- finish_test
- return
- }
- sqlite3_fts5_register_origintext db
- do_execsql_test 1.0 {
- CREATE VIRTUAL TABLE ft USING fts5(
- x, tokenize="origintext unicode61", tokendata=1
- );
- }
- do_execsql_test 1.1 {
- BEGIN;
- INSERT INTO ft VALUES('Hello');
- INSERT INTO ft VALUES('hello');
- INSERT INTO ft VALUES('HELLO');
- INSERT INTO ft VALUES('today');
- INSERT INTO ft VALUES('today');
- INSERT INTO ft VALUES('today');
- INSERT INTO ft VALUES('World');
- INSERT INTO ft VALUES('world');
- INSERT INTO ft VALUES('WORLD');
- COMMIT;
- }
- do_execsql_test 1.2 { SELECT rowid FROM ft('hello'); } {1 2 3}
- do_execsql_test 1.3 { SELECT rowid FROM ft('today'); } {4 5 6}
- do_execsql_test 1.4 { SELECT rowid FROM ft('world'); } {7 8 9}
- do_execsql_test 1.5 {
- SELECT count(*) FROM ft_data
- } 3
- do_execsql_test 1.6 {
- DELETE FROM ft;
- INSERT INTO ft(ft, rank) VALUES('pgsz', 64);
- BEGIN;
- WITH s(i) AS (
- SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<100
- )
- INSERT INTO ft SELECT 'Hello Hello Hello Hello Hello Hello Hello' FROM s;
- INSERT INTO ft VALUES ('hELLO hELLO hELLO');
- INSERT INTO ft VALUES('today today today today today today today');
- INSERT INTO ft VALUES('today today today today today today today');
- INSERT INTO ft VALUES('today today today today today today today');
- INSERT INTO ft VALUES('today today today today today today today');
- INSERT INTO ft VALUES('today today today today today today today');
- INSERT INTO ft VALUES('today today today today today today today');
- INSERT INTO ft VALUES('World World World World World World World');
- INSERT INTO ft VALUES('world world world world world world world');
- INSERT INTO ft VALUES('WORLD WORLD WORLD WORLD WORLD WORLD WORLD');
- INSERT INTO ft VALUES('World World World World World World World');
- INSERT INTO ft VALUES('world world world world world world world');
- INSERT INTO ft VALUES('WORLD WORLD WORLD WORLD WORLD WORLD WORLD');
- COMMIT;
- }
- do_execsql_test 1.7 {
- SELECT count(*) FROM ft_data;
- } 23
- do_execsql_test 1.8 { SELECT rowid FROM ft('hello') WHERE rowid>100; } {101}
- do_execsql_test 1.9 {
- DELETE FROM ft;
- INSERT INTO ft(ft) VALUES('optimize');
- SELECT count(*) FROM ft_data;
- } {2}
- do_execsql_test 1.10 {
- BEGIN;
- INSERT INTO ft VALUES('Hello');
- INSERT INTO ft VALUES('hello');
- INSERT INTO ft VALUES('HELLO');
- INSERT INTO ft VALUES('today');
- INSERT INTO ft VALUES('today');
- INSERT INTO ft VALUES('today');
- INSERT INTO ft VALUES('World');
- INSERT INTO ft VALUES('world');
- INSERT INTO ft VALUES('WORLD');
- }
- do_execsql_test 1.11 { SELECT rowid FROM ft('hello'); } {1 2 3}
- do_execsql_test 1.12 { SELECT rowid FROM ft('today'); } {4 5 6}
- do_execsql_test 1.13 { SELECT rowid FROM ft('world'); } {7 8 9}
- do_execsql_test 1.14 { SELECT rowid FROM ft('hello') ORDER BY rank; } {1 2 3}
- #------------------------------------------------------------------------
- reset_db
- sqlite3_fts5_register_origintext db
- proc tokens {cmd} {
- set ret [list]
- for {set iTok 0} {$iTok < [$cmd xInstCount]} {incr iTok} {
- set txt [$cmd xInstToken $iTok 0]
- set txt [string map [list "\0" "."] $txt]
- lappend ret $txt
- }
- set ret
- }
- sqlite3_fts5_create_function db tokens tokens
- do_execsql_test 2.0 {
- CREATE VIRTUAL TABLE x1 USING fts5(
- v, tokenize="origintext unicode61", tokendata=1, detail=none
- );
- INSERT INTO x1 VALUES('xxx Xxx XXX yyy YYY yyy');
- INSERT INTO x1 VALUES('xxx yyy xxx yyy yyy yyy');
- }
- do_execsql_test 2.1 {
- SELECT tokens(x1) FROM x1('xxx');
- } {
- {xxx xxx.Xxx xxx.XXX} {xxx xxx}
- }
- do_execsql_test 2.2 {
- UPDATE x1_content SET c0 = 'xxx xxX xxx yyy yyy yyy' WHERE id=1;
- }
- do_execsql_test 2.3 {
- SELECT tokens(x1) FROM x1('xxx');
- } {
- {xxx {} xxx} {xxx xxx}
- }
- finish_test
|