xref: /sqlite-3.40.0/test/fts3near.test (revision f6b1a8e1)
1
2# 2007 October 15
3#
4# The author disclaims copyright to this source code.  In place of
5# a legal notice, here is a blessing:
6#
7#    May you do good and not evil.
8#    May you find forgiveness for yourself and forgive others.
9#    May you share freely, never taking more than you give.
10#
11#*************************************************************************
12#
13# $Id: fts3near.test,v 1.3 2009/01/02 17:33:46 danielk1977 Exp $
14#
15
16set testdir [file dirname $argv0]
17source $testdir/tester.tcl
18
19# If SQLITE_ENABLE_FTS3 is defined, omit this file.
20ifcapable !fts3 {
21  finish_test
22  return
23}
24
25db eval {
26  CREATE VIRTUAL TABLE t1 USING fts3(content);
27  INSERT INTO t1(content) VALUES('one three four five');
28  INSERT INTO t1(content) VALUES('two three four five');
29  INSERT INTO t1(content) VALUES('one two three four five');
30}
31
32do_test fts3near-1.1 {
33  execsql {SELECT docid FROM t1 WHERE content MATCH 'one NEAR/0 three'}
34} {1}
35do_test fts3near-1.2 {
36  execsql {SELECT docid FROM t1 WHERE content MATCH 'one NEAR/1 two'}
37} {3}
38do_test fts3near-1.3 {
39  execsql {SELECT docid FROM t1 WHERE content MATCH 'one NEAR/1 three'}
40} {1 3}
41do_test fts3near-1.4 {
42  execsql {SELECT docid FROM t1 WHERE content MATCH 'three NEAR/1 one'}
43} {1 3}
44do_test fts3near-1.5 {
45  execsql {SELECT docid FROM t1 WHERE content MATCH '"one two" NEAR/1 five'}
46} {}
47do_test fts3near-1.6 {
48  execsql {SELECT docid FROM t1 WHERE content MATCH '"one two" NEAR/2 five'}
49} {3}
50do_test fts3near-1.7 {
51  execsql {SELECT docid FROM t1 WHERE content MATCH 'one NEAR four'}
52} {1 3}
53do_test fts3near-1.8 {
54  execsql {SELECT docid FROM t1 WHERE content MATCH 'four NEAR three'}
55} {1 2 3}
56do_test fts3near-1.9 {
57  execsql {SELECT docid FROM t1 WHERE content MATCH '"four five" NEAR/0 three'}
58} {1 2 3}
59do_test fts3near-1.10 {
60  execsql {SELECT docid FROM t1 WHERE content MATCH '"four five" NEAR/2 one'}
61} {1 3}
62do_test fts3near-1.11 {
63  execsql {SELECT docid FROM t1 WHERE content MATCH '"four five" NEAR/1 one'}
64} {1}
65do_test fts3near-1.12 {
66  execsql {SELECT docid FROM t1 WHERE content MATCH 'five NEAR/1 "two three"'}
67} {2 3}
68do_test fts3near-1.13 {
69  execsql {SELECT docid FROM t1 WHERE content MATCH 'one NEAR five'}
70} {1 3}
71
72do_test fts3near-1.14 {
73  execsql {SELECT docid FROM t1 WHERE content MATCH 'four NEAR four'}
74} {}
75do_test fts3near-1.15 {
76  execsql {SELECT docid FROM t1 WHERE content MATCH 'one NEAR two NEAR one'}
77} {3}
78
79do_test fts3near-1.16 {
80  execsql {
81    SELECT docid FROM t1 WHERE content MATCH '"one three" NEAR/0 "four five"'
82  }
83} {1}
84do_test fts3near-1.17 {
85  execsql {
86    SELECT docid FROM t1 WHERE content MATCH '"four five" NEAR/0 "one three"'
87  }
88} {1}
89
90
91# Output format of the offsets() function:
92#
93#     <column number> <term number> <starting offset> <number of bytes>
94#
95db eval {
96  INSERT INTO t1(content) VALUES('A X B C D A B');
97}
98do_test fts3near-2.1 {
99  execsql {
100    SELECT offsets(t1) FROM t1 WHERE content MATCH 'A NEAR/0 B'
101  }
102} {{0 0 10 1 0 1 12 1}}
103do_test fts3near-2.2 {
104  execsql {
105    SELECT offsets(t1) FROM t1 WHERE content MATCH 'B NEAR/0 A'
106  }
107} {{0 1 10 1 0 0 12 1}}
108do_test fts3near-2.3 {
109  execsql {
110    SELECT offsets(t1) FROM t1 WHERE content MATCH '"C D" NEAR/0 A'
111  }
112} {{0 0 6 1 0 1 8 1 0 2 10 1}}
113do_test fts3near-2.4 {
114  execsql {
115    SELECT offsets(t1) FROM t1 WHERE content MATCH 'A NEAR/0 "C D"'
116  }
117} {{0 1 6 1 0 2 8 1 0 0 10 1}}
118do_test fts3near-2.5 {
119  execsql {
120    SELECT offsets(t1) FROM t1 WHERE content MATCH 'A NEAR A'
121  }
122} {{0 0 0 1 0 1 0 1 0 0 10 1 0 1 10 1}}
123do_test fts3near-2.6 {
124  execsql {
125    INSERT INTO t1 VALUES('A A A');
126    SELECT offsets(t1) FROM t1 WHERE content MATCH 'A NEAR/2 A';
127  }
128} [list [list 0 0 0 1   0 1 0 1   0 0 2 1   0 1 2 1   0 0 4 1   0 1 4 1]]
129do_test fts3near-2.7 {
130  execsql {
131    DELETE FROM t1;
132    INSERT INTO t1 VALUES('A A A A');
133    SELECT offsets(t1) FROM t1 WHERE content MATCH 'A NEAR A NEAR A';
134  }
135} [list [list \
136    0 0 0 1   0 1 0 1   0 2 0 1   0 0 2 1   \
137    0 1 2 1   0 2 2 1   0 0 4 1   0 1 4 1   \
138    0 2 4 1   0 0 6 1   0 1 6 1   0 2 6 1   \
139]]
140
141db eval {
142  DELETE FROM t1;
143  INSERT INTO t1(content) VALUES(
144    'one two three two four six three six nine four eight twelve'
145  );
146}
147
148do_test fts3near-3.1 {
149  execsql {SELECT offsets(t1) FROM t1 WHERE content MATCH 'three NEAR/1 one'}
150} {{0 1 0 3 0 0 8 5}}
151do_test fts3near-3.2 {
152  execsql {SELECT offsets(t1) FROM t1 WHERE content MATCH 'one NEAR/1 three'}
153} {{0 0 0 3 0 1 8 5}}
154do_test fts3near-3.3 {
155  execsql {SELECT offsets(t1) FROM t1 WHERE content MATCH 'three NEAR/1 two'}
156} {{0 1 4 3 0 0 8 5 0 1 14 3}}
157do_test fts3near-3.4 {
158  execsql {SELECT offsets(t1) FROM t1 WHERE content MATCH 'three NEAR/2 two'}
159} {{0 1 4 3 0 0 8 5 0 1 14 3 0 0 27 5}}
160do_test fts3near-3.5 {
161  execsql {SELECT offsets(t1) FROM t1 WHERE content MATCH 'two NEAR/2 three'}
162} {{0 0 4 3 0 1 8 5 0 0 14 3 0 1 27 5}}
163do_test fts3near-3.6 {
164  execsql {
165    SELECT offsets(t1) FROM t1 WHERE content MATCH 'three NEAR/0 "two four"'
166  }
167} {{0 0 8 5 0 1 14 3 0 2 18 4}}
168do_test fts3near-3.7 {
169  execsql {
170    SELECT offsets(t1) FROM t1 WHERE content MATCH '"two four" NEAR/0 three'}
171} {{0 2 8 5 0 0 14 3 0 1 18 4}}
172
173db eval {
174  INSERT INTO t1(content) VALUES('
175    This specification defines Cascading Style Sheets, level 2 (CSS2). CSS2 is a style sheet language that allows authors and users to attach style (e.g., fonts, spacing, and aural cues) to structured documents (e.g., HTML documents and XML applications). By separating the presentation style of documents from the content of documents, CSS2 simplifies Web authoring and site maintenance.
176
177    CSS2 builds on CSS1 (see [CSS1]) and, with very few exceptions, all valid CSS1 style sheets are valid CSS2 style sheets. CSS2 supports media-specific style sheets so that authors may tailor the presentation of their documents to visual browsers, aural devices, printers, braille devices, handheld devices, etc. This specification also supports content positioning, downloadable fonts, table layout, features for internationalization, automatic counters and numbering, and some properties related to user interface.
178  ')
179}
180do_test fts3near-4.1 {
181  execsql {
182    SELECT snippet(t1) FROM t1 WHERE content MATCH 'specification NEAR supports'
183  }
184} {{<b>...</b>braille devices, handheld devices, etc. This <b>specification</b> also <b>supports</b> content positioning, downloadable fonts, table layout<b>...</b>}}
185
186do_test fts3near-5.1 {
187  execsql {
188    SELECT docid FROM t1 WHERE content MATCH 'specification attach'
189  }
190} {2}
191do_test fts3near-5.2 {
192  execsql {
193    SELECT docid FROM t1 WHERE content MATCH 'specification NEAR attach'
194  }
195} {}
196do_test fts3near-5.3 {
197  execsql {
198    SELECT docid FROM t1 WHERE content MATCH 'specification NEAR/18 attach'
199  }
200} {}
201do_test fts3near-5.4 {
202  execsql {
203    SELECT docid FROM t1 WHERE content MATCH 'specification NEAR/19 attach'
204  }
205} {2}
206do_test fts3near-5.5 {
207  execsql {
208    SELECT docid FROM t1 WHERE content MATCH 'specification NEAR/000018 attach'
209  }
210} {}
211do_test fts3near-5.6 {
212  execsql {
213    SELECT docid FROM t1 WHERE content MATCH 'specification NEAR/000019 attach'
214  }
215} {2}
216
217db eval {
218  INSERT INTO t1 VALUES('
219      abbrev aberrations abjurations aboding abr abscesses absolutistic
220      abstention abuses acanthuses acceptance acclaimers accomplish
221      accoutring accusation acetonic acid acolytes acquitting acrylonitrile
222      actives acyclic addicted adenoid adjacently adjusting admissible
223      adoption adulated advantaging advertisers aedes aerogramme aetiology
224      affiliative afforest afterclap agamogenesis aggrade agings agonize
225      agron ailurophile airfreight airspeed alarmists alchemizing
226      alexandrines alien aliped all allergenic allocator allowances almost
227      alphabetizes altho alvine amaurosis ambles ameliorate amicability amnio
228      amour ampicillin amusement anadromous analogues anarchy anchormen
229      anecdota aneurin angst animating anlage announcements anodized
230      answerable antemeridian anthracene antiabortionist anticlimaxes
231      antifriction antimitotic antiphon antiques antithetic anviled
232      apatosaurus aphrodisia apodal aposiopesis apparatus appendectomies
233      applications appraisingly appropriate apteryx arabinose
234      arboricultural archdeaconates archipelago ardently arguers armadillo
235      arnicas arrayed arrowy arthroscope artisans ascensive ashier
236      aspersorium assail assentor assignees assonants astereognosis
237      astringency astutest atheistical atomize attachment attenuates
238      attrahent audibility augite auricle auteurists autobus autolysis
239      autosome avenge avidest aw awl ayes babirusa backbeats backgrounder
240      backseat backswings baddie bagnios baked balefuller ballista balmily
241      bandbox bandylegged bankruptcy baptism barbering bargain barneys
242      barracuda barterer bashes bassists bathers batterer bavardage
243      beachfront beanstalk beauteous become bedim bedtimes beermats begat
244      begun belabors bellarmine belongings bending benthos bereavements
245      besieger bestialized betide bevels biases bicarbonates bidentate bigger
246      bile billow bine biodynamics biomedicine biotites birding bisection
247      bitingly bkg blackheads blaeberry blanking blatherer bleeper blindage
248      blithefulness blockish bloodstreams bloused blubbing bluestocking
249      blurted boatbill bobtailed boffo bold boltrope bondservant bonks
250      bookbinding bookworm booting borating boscages botchers bougainvillea
251      bounty bowlegged boyhood bracketed brainstorm brandishes
252      braunschweigers brazilin breakneck breathlessness brewage bridesmaids
253      brighter brisker broader brokerages bronziest browband brunets bryology
254      bucking budlike bugleweed bulkily bulling bummer bunglers bureau burgs
255      burrito bushfire buss butlery buttressing bylines cabdriver cached
256      cadaverousnesses cafeterias cakewalk calcifies calendula callboy calms
257      calyptra camisoles camps candelabrum caned cannolis canoodling cantors
258      cape caponize capsuling caracoled carbolics carcase carditis caretakers
259      carnallite carousel carrageenan cartels carves cashbook castanets
260      casuistry catalyzer catchers categorizations cathexis caucuses
261      causeway cavetto cede cella cementite centenary centrals ceramics ceria
262      cervixes chafferer chalcopyrites chamfers change chaotically
263      characteristically charivari chases chatterer cheats cheeks chef
264      chemurgy chetah chickaree chigoes chillies chinning chirp chive
265      chloroforms chokebore choplogic chorioids chromatic chronically
266      chubbiest chunder chutzpah cimetidine cinque circulated circumscribe
267      cirrose citrin claddagh clamorousness clapperboards classicalism
268      clauses cleanse clemency clicker clinchers cliquiest clods closeting
269      cloudscape clucking cnidarian coalfish coatrack coca cockfights coddled
270      coeducation coexistence cognitively coiffed colatitude collage
271      collections collinear colonelcy colorimetric columelliform combos
272      comforters commence commercialist commit commorancy communized compar
273      compendiously complainers compliance composition comprised comradery
274      concelebrants concerted conciliation concourses condensate
275      condonations confab confessionals confirmed conforming congeal
276      congregant conjectured conjurers connoisseurs conscripting
277      conservator consolable conspired constricting consuls contagious
278      contemporaneity contesters continuities contractors contrarian
279      contrive convalescents convents convexly convulsed cooncan coparcenary
280      coprolite copyreader cordially corklike cornflour coroner corralling
281      corrigible corsages cosies cosmonauts costumer cottontails counselings
282      counterclaim counterpane countertenors courageously couth coveting
283      coworker cozier cracklings crampon crappies craved cream credenzas
284      crematoriums cresol cricoid crinkle criterion crocodile crore crossover
285      crowded cruelest crunch cruzeiros cryptomeria cubism cuesta culprit
286      cumquat cupped curdle curly cursoring curvy customized cutting cyclamens
287      cylindrical cytaster dachshund daikon damages damselfly dangling
288      darkest databanks dauphine dazzling deadpanned deathday debauchers
289      debunking decameter decedents decibel decisions declinations
290      decomposition decoratively decretive deduct deescalated defecating
291      deferentially definiendum defluxion defrocks degrade deice dekaliters
292      deli delinquencies deludedly demarcates demineralizers demodulating
293      demonstrabilities demurred deniabilities denouncement denudation
294      departure deplorable deposing depredatory deputizes derivational
295      desalinization descriptors desexes desisted despising destitute
296      detectability determiner detoxifying devalued devilries devotions
297      dextrous diagenesis dialling diaphoresis diazonium dickeys diddums
298      differencing dig dignified dildo dimetric dineric dinosaurs diplodocus
299      directer dirty disagrees disassembler disburses disclosures
300      disconcerts discountability discrete disembarrass disenthrone
301      disgruntled dishpans disintegrators dislodged disobedient
302      dispassionate dispiritednesses dispraised disqualifying
303      dissatisfying dissidence dissolvers distich distracting distrusts
304      ditto diverse divineness dizzily dockyard dodgers doggish doited dom
305      dominium doohickey doozie dorsum doubleheaders dourer downbeats
306      downshifted doyennes draftsman dramatic drawling dredge drifter
307      drivelines droopier drowsed drunkards dubiosities duding dulcifying
308      dumpcart duodecillion durable duteous dyed dysgenic eagles earplugs
309      earwitness ebonite echoers economical ectothermous edibility educates
310      effected effigies eggbeaters egresses ejaculates elasticize elector
311      electrodynamometer electrophorus elem eligibly eloped emaciating
312      embarcaderos embezzlers embosses embryectomy emfs emotionalizing
313      empiricist emu enamels enchained encoded encrusts endeavored endogamous
314      endothelioma energizes engager engrosses enl enologist enrolls ensphere
315      enters entirety entrap entryways envies eosinophil epicentral
316      epigrammatized episodic epochs equestrian equitably erect ernes
317      errorless escalated eschatology espaliers essonite estop eternity
318      ethnologically eudemonics euphonious euthenist evangelizations
319      eventuality evilest evulsion examinee exceptionably exciter
320      excremental execrably exemplars exhalant exhorter exocrine exothermic
321      expected expends explainable exploratory expostulatory expunges
322      extends externals extorts extrapolative extrorse eyebolt eyra
323      facetiously factor faeries fairings fallacies falsities fancifulness
324      fantasticalness farmhouse fascinate fatalistically fattener fave
325      fearlessly featly federates feints fellowman fencers ferny
326      fertilenesses feta feudality fibers fictionalize fiefs fightback
327      filefish filmier finaglers fingerboards finochio firefly firmament
328      fishmeal fitted fjords flagitiousnesses flamen flaps flatfooting
329      flauntier fleapit fleshes flickertail flints floaty floorboards
330      floristic flow fluffily fluorescein flutes flyspecks foetal folderols
331      followable foolhardier footlockers foppish forceless foredo foreknows
332      foreseeing foretaste forgather forlorn formidableness fortalice
333      forwarding founding foxhunting fragmentarily frangipani fray freeform
334      freezable freshening fridges frilliest frizzed frontbench frottages
335      fruitcake fryable fugleman fulminated functionalists fungoid furfuran
336      furtive fussy fwd gadolinium galabias gallinaceous galvanism gamers
337      gangland gaoling garganey garrisoning gasp gate gauger gayety geed
338      geminately generalissimos genii gentled geochronology geomorphic
339      geriatricians gesellschaft ghat gibbeting giggles gimps girdlers
340      glabella glaive glassfuls gleefully glistered globetrotted glorifier
341      gloving glutathione glyptodont goaled gobsmacked goggliest golliwog
342      goobers gooseberries gormandizer gouramis grabbier gradually grampuses
343      grandmothers granulated graptolite gratuitously gravitates greaten
344      greenmailer greys grills grippers groan gropingly grounding groveling
345      grueled grunter guardroom guggle guineas gummed gunnysacks gushingly
346      gutturals gynecoid gyrostabilizer habitudes haemophilia hailer hairs
347      halest hallow halters hamsters handhelds handsaw hangup haranguer
348      hardheartedness harlotry harps hashing hated hauntingly hayrack
349      headcases headphone headword heartbreakers heaters hebephrenia
350      hedonist heightening heliozoan helots hemelytron hemorrhagic hent
351      herbicides hereunto heroines heteroclitics heterotrophs hexers
352      hidebound hies hightails hindmost hippopotomonstrosesquipedalian
353      histologist hittable hobbledehoys hogans holdings holocrine homegirls
354      homesteader homogeneousness homopolar honeys hoodwinks hoovered
355      horizontally horridness horseshoers hospitalization hotdogging houri
356      housemate howitzers huffier humanist humid humors huntress husbandmen
357      hyaenas hydride hydrokinetics hydroponically hygrothermograph
358      hyperbolically hypersensitiveness hypnogogic hypodermically
359      hypothermia iatrochemistry ichthyological idealist ideograms idling
360      igniting illegal illuminatingly ilmenite imbibing immateriality
361      immigrating immortalizes immures imparts impeder imperfection
362      impersonated implant implying imposition imprecating imprimis
363      improvising impv inanenesses inaugurate incapably incentivize
364      incineration incloses incomparableness inconsequential incorporate
365      incrementing incumbered indecorous indentation indicative indignities
366      indistinguishably indoors indulges ineducation inerrable
367      inexperienced infants infestations infirmnesses inflicting
368      infracostal ingathered ingressions inheritances iniquity
369      injuriousnesses innervated inoculates inquisitionist insectile
370      insiders insolate inspirers instatement instr insulates intactness
371      intellects intensifies intercalations intercontinental interferon
372      interlarded intermarrying internalizing interpersonally
373      interrelatednesses intersperse interviewees intolerance
374      intransigents introducing intubates invades inventing inveterate
375      invocate iodides irenicism ironsmith irreducibly irresistibility
376      irriguous isobarisms isometrically issuable itineracies jackdaws
377      jaggery jangling javelins jeeringly jeremiad jeweler jigsawing jitter
378      jocosity jokester jot jowls judicative juicy jungly jurists juxtaposed
379      kalpa karstify keddah kendo kermesses keynote kibbutznik kidnaper
380      kilogram kindred kingpins kissers klatch kneads knobbed knowingest
381      kookaburras kruller labefaction labyrinths lacquer laddered lagoons
382      lambency laminates lancinate landscapist lankiness lapse larked lasso
383      laterite laudableness laundrywomen lawgiver laypersons leafhoppers
384      leapfrogs leaven leeches legated legislature leitmotifs lenients
385      leprous letterheads levelling lexicographically liberalists
386      librettist licorice lifesaving lightheadedly likelier limekiln limped
387      lines linkers lipoma liquidator listeners litharge litmus
388      liverishnesses loamier lobeline locative locutionary loggier loiterer
389      longevity loomed loping lotion louts lowboys luaus lucrativeness lulus
390      lumpier lungi lush luthern lymphangial lythraceous machinists maculate
391      maggot magnetochemistry maharani maimers majored malaprops malignants
392      maloti mammary manchineel manfully manicotti manipulativenesses
393      mansards manufactories maraschino margin markdown marooning marshland
394      mascaraing massaging masticate matchmark matings mattes mausoleum
395      mayflies mealworm meataxe medevaced medievalist meetings megavitamin
396      melded melodramatic memorableness mendaciousnesses mensurable
397      mercenaries mere meronymous mesmerizes mestee metallurgical
398      metastasize meterages meticulosity mewed microbe microcrystalline
399      micromanager microsporophyll midiron miffed milder militiamen
400      millesimal milometer mincing mingily minims minstrelsy mires
401      misanthropic miscalculate miscomprehended misdefines misery mishears
402      misled mispickel misrepresent misspending mistranslate miswriting
403      mixologists mobilizers moderators modulate mojo mollies momentum monde
404      monied monocles monographs monophyletic monotonousness moocher
405      moorages morality morion mortally moseyed motherly motorboat mouldering
406      mousers moveables mucky mudslides mulatto multicellularity
407      multipartite multivalences mundanities murkiest mushed muskiness
408      mutability mutisms mycelia myosotis mythicist nacred namable napkin
409      narghile nastiness nattering nauseations nearliest necessitate
410      necrophobia neg negotiators neologizes nephrotomy netiquette
411      neurophysiology newbie newspaper niccolite nielsbohriums nightlong
412      nincompoops nitpicked nix noddling nomadize nonadhesive noncandidates
413      nonconducting nondigestible nones nongreasy nonjoinder nonoccurrence
414      nonporousness nonrestrictive nonstaining nonuniform nooses northwards
415      nostalgic notepaper nourishment noyades nuclides numberless numskulls
416      nutmegged nymphaea oatmeal obis objurgators oblivious obsequiousness
417      obsoletism obtruding occlusions ocher octettes odeums offcuts
418      officiation ogival oilstone olestras omikron oncogenesis onsetting
419      oomphs openly ophthalmoscope opposites optimum orangutans
420      orchestrations ordn organophosphates origin ornithosis orthognathous
421      oscillatory ossuaries ostracized ounce outbreaks outearning outgrows
422      outlived outpoints outrunning outspends outwearing overabound
423      overbalance overcautious overcrowds overdubbing overexpanding
424      overgraze overindustrialize overlearning overoptimism overproducing
425      overripe overshadowing overspreading overstuff overtones overwind ow
426      oxidizing pacer packs paganish painstakingly palate palette pally
427      palsying pandemic panhandled pantheism papaws papped parading
428      parallelize paranoia parasitically pardners parietal parodied pars
429      participator partridgeberry passerines password pastors
430      paterfamiliases patination patrolman paunch pawnshops peacekeeper
431      peatbog peculator pedestrianism peduncles pegboard pellucidnesses
432      pendency penitentiary penstock pentylenetetrazol peptidase perched
433      perennial performing perigynous peripheralize perjurer permissively
434      perpetuals persistency perspicuously perturbingly pesky petcock
435      petrologists pfennige pharmacies phenformin philanderers
436      philosophically phonecards phosgenes photocomposer photogenic photons
437      phototype phylloid physiotherapeutics picadores pickup pieces pigging
438      pilaster pillion pimples pinioned pinpricks pipers pirogi pit
439      pitifullest pizza placental plainly planing plasmin platforming
440      playacts playwrights plectra pleurisy plopped plug plumule plussed
441      poaches poetasters pointless polarize policyholder polkaed
442      polyadelphous polygraphing polyphonous pomace ponderers pooch poplar
443      porcelains portableness portly positioning postage posthumously
444      postponed potages potholed poulard powdering practised pranksters
445      preadapt preassigning precentors precipitous preconditions predefined
446      predictors preengage prefers prehumans premedical prenotification
447      preplanning prepuberty presbytery presentation presidia prestissimo
448      preterites prevailer prewarmed priding primitively principalships
449      prisage privileged probed prochurch proctoscope products proficients
450      prognathism prohibiting proletarianisms prominence promulgates
451      proofreading property proportions prorate proselytize prosthesis
452      proteins prototypic provenances provitamin prudish pseudonymities
453      psychoanalysts psychoneuroses psychrometer publishable pufferies
454      pullet pulses punchy punkins purchased purities pursers pushover
455      putridity pylons pyrogenous pzazz quadricepses quaff qualmish quarriers
456      quasilinear queerness questionnaires quieten quintals quislings quoits
457      rabidness racketeers radiative radioisotope radiotherapists ragingly
458      rainband rakishness rampagers rands raped rare raspy ratiocinator
459      rattlebrain ravening razz reactivation readoption realm reapportioning
460      reasoning reattempts rebidding rebuts recapitulatory receptiveness
461      recipes reckonings recognizee recommendatory reconciled reconnoiters
462      recontaminated recoupments recruits recumbently redact redefine
463      redheaded redistributable redraw redwing reeled reenlistment reexports
464      refiles reflate reflowing refortified refried refuses regelate
465      registrant regretting rehabilitative reigning reinduced reinstalled
466      reinvesting rejoining relations relegates religiosities reluctivity
467      remastered reminisce remodifying remounted rends renovate reordered
468      repartee repel rephrase replicate repossessing reprint reprogramed
469      repugnantly requiter rescheduling resegregate resettled residually
470      resold resourcefulness respondent restating restrainedly resubmission
471      resurveyed retaliating retiarius retorsion retreated retrofitting
472      returning revanchism reverberated reverted revitalization
473      revolutionize rewind rhapsodizing rhizogenic rhythms ricketinesses
474      ridicule righteous rilles rinks rippliest ritualize riyals roast rockery
475      roguish romanizations rookiest roquelaure rotation rotundity rounder
476      routinizing rubberize rubricated ruefully ruining rummaged runic
477      russets ruttish sackers sacrosanctly safeguarding said salaciousness
478      salinity salsas salutatorians sampan sandbag saned santonin
479      saprophagous sarnies satem saturant savaged sawbucks scablike scalp
480      scant scared scatter schedulers schizophrenics schnauzers schoolmarms
481      scintillae scleroses scoped scotched scram scratchiness screwball
482      scripting scrubwomen scrutinizing scumbled scuttled seals seasickness
483      seccos secretions secularizing seditiousnesses seeking segregators
484      seize selfish semeiology seminarian semitropical sensate sensors
485      sentimo septicemic sequentially serener serine serums
486      sesquicentennials seventeen sexiest sforzandos shadowing shallot
487      shampooing sharking shearer sheered shelters shifter shiner shipper
488      shitted shoaled shofroth shorebirds shortsightedly showboated shrank
489      shrines shucking shuttlecocks sickeningly sideling sidewise sigil
490      signifiers siliceous silty simony simulative singled sinkings sirrah
491      situps skateboarder sketchpad skim skirmished skulkers skywalk slander
492      slating sleaziest sleepyheads slicking slink slitting slot slub
493      slumlords smallest smattered smilier smokers smriti snailfish snatch
494      snides snitching snooze snowblowers snub soapboxing socialite sockeyes
495      softest sold solicitings solleret sombreros somnolencies sons sopor
496      sorites soubrette soupspoon southpaw spaces spandex sparkers spatially
497      speccing specking spectroscopists speedsters spermatics sphincter
498      spiffied spindlings spirals spitball splayfeet splitter spokeswomen
499      spooled sportily spousals sprightliness sprogs spurner squalene
500      squattered squelches squirms stablish staggerings stalactitic stamp
501      stands starflower starwort stations stayed steamroll steeplebush
502      stemmatics stepfathers stereos steroid sticks stillage stinker
503      stirringly stockpiling stomaching stopcock stormers strabismuses
504      strainer strappado strawberries streetwise striae strikeouts strives
505      stroppiest stubbed study stunting style suavity subchloride subdeb
506      subfields subjoin sublittoral subnotebooks subprograms subside
507      substantial subtenants subtreasuries succeeding sucked sufferers
508      sugarier sulfaguanidine sulphating summerhouse sunbonnets sunned
509      superagency supercontinent superheroes supernatural superscribing
510      superthin supplest suppositive surcease surfs surprise survey
511      suspiration svelte swamplands swashes sweatshop swellhead swindling
512      switching sworn syllabuses sympathetics synchrocyclotron syndic
513      synonymously syringed tablatures tabulation tackling taiga takas talker
514      tamarisks tangential tans taproom tarpapers taskmaster tattiest
515      tautologically taxied teacup tearjerkers technocracies teepee
516      telegenic telephony telexed temperaments temptress tenderizing tensed
517      tenuring tergal terned terror testatrices tetherball textile thatched
518      their theorem thereof thermometers thewy thimerosal thirsty
519      thoroughwort threateningly thrived through thumbnails thwacks
520      ticketing tie til timekeepers timorousness tinkers tippers tisane
521      titrating toastmaster toff toking tomb tongs toolmakings topes topple
522      torose tortilla totalizing touchlines tousling townsmen trachea
523      tradeable tragedienne traitorous trances transcendentalists
524      transferrable tranship translating transmogrifying transportable
525      transvestism traumatize treachery treed trenail tressing tribeswoman
526      trichromatism triennials trikes trims triplicate tristich trivializes
527      trombonist trots trouts trued trunnion tryster tubes tulle tundras turban
528      turgescence turnround tutelar tweedinesses twill twit tympanum typists
529      tzarists ulcered ultramodern umbles unaccountability unamended
530      unassertivenesses unbanned unblocked unbundled uncertified unclaimed
531      uncoated unconcerns unconvinced uncrossing undefined underbodice
532      underemphasize undergrowth underpayment undershirts understudy
533      underwritten undissolved unearthed unentered unexpended unfeeling
534      unforeseen unfussy unhair unhinges unifilar unimproved uninvitingly
535      universalization unknowns unlimbering unman unmet unnaturalness
536      unornament unperturbed unprecedentedly unproportionate unread
537      unreflecting unreproducible unripe unsatisfying unseaworthiness
538      unsharable unsociable unstacking unsubtly untactfully untied untruest
539      unveils unwilled unyokes upheave upraised upstart upwind urethrae
540      urtexts usurers uvula vacillators vailed validation valvule vanities
541      varia variously vassaled vav veggies velours venerator ventrals
542      verbalizes verification vernacularized verticality vestigially via
543      vicariously victoriousness viewpoint villainies vines violoncellist
544      virtual viscus vital vitrify viviparous vocalizers voidable volleys
545      volutes vouches vulcanology wackos waggery wainwrights waling wallowing
546      wanking wardroom warmup wartiest washwoman watchman watermarks waverer
547      wayzgoose weariest weatherstripped weediness weevil welcomed
548      wentletrap whackers wheatworm whelp whf whinged whirl whistles whithers
549      wholesomeness whosoever widows wikiup willowier windburned windsail
550      wingspread winterkilled wisecracking witchgrass witling wobbliest
551      womanliness woodcut woodworking woozy working worldwide worthiest
552      wrappings wretched writhe wynd xylophone yardarm yea yelped yippee yoni
553      yuks zealotry zigzagger zitherists zoologists zygosis');
554}
555
556do_test fts3near-6.1 {
557  execsql {
558    SELECT docid FROM t1 WHERE content MATCH 'abbrev zygosis'
559  }
560} {3}
561do_test fts3near-6.2 {
562  execsql {
563    SELECT docid FROM t1 WHERE content MATCH 'abbrev NEAR zygosis'
564  }
565} {}
566do_test fts3near-6.3 {
567  execsql {
568    SELECT docid FROM t1 WHERE content MATCH 'abbrev NEAR/100 zygosis'
569  }
570} {}
571do_test fts3near-6.4 {
572  execsql {
573    SELECT docid FROM t1 WHERE content MATCH 'abbrev NEAR/1000 zygosis'
574  }
575} {}
576do_test fts3near-6.5 {
577  execsql {
578    SELECT docid FROM t1 WHERE content MATCH 'abbrev NEAR/10000 zygosis'
579  }
580} {3}
581
582# Ticket 38b1ae018f.
583#
584do_execsql_test fts3near-7.1 {
585  CREATE VIRTUAL TABLE x USING fts4(y,z);
586  INSERT INTO x VALUES('aaa bbb ccc ddd', 'bbb ddd aaa ccc');
587  SELECT * FROM x where y MATCH 'bbb NEAR/6 aaa';
588} {{aaa bbb ccc ddd} {bbb ddd aaa ccc}}
589
590do_execsql_test fts3near-7.2 {
591  CREATE VIRTUAL TABLE t2 USING fts4(a, b);
592  INSERT INTO t2 VALUES('A B C', 'A D E');
593  SELECT * FROM t2 where t2 MATCH 'a:A NEAR E'
594} {}
595
596
597finish_test
598