diff --git a/phpBB/docs/sphinx.sample.conf b/phpBB/docs/sphinx.sample.conf index d7f2fd782c..aba17d8d55 100644 --- a/phpBB/docs/sphinx.sample.conf +++ b/phpBB/docs/sphinx.sample.conf @@ -70,11 +70,16 @@ index index_phpbb_{SPHINX_ID}_main docinfo = extern morphology = none stopwords = + wordforms = # optional, specify path to wordforms file. See ./docs/sphinx_wordforms.txt for example + exceptions = # optional, specify path to exceptions file. See ./docs/sphinx_exceptions.txt for example min_word_len = 2 charset_table = U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z, A..Z->a..z, a..z, U+0149, U+017F, U+0138, U+00DF, U+00FF, U+00C0..U+00D6->U+00E0..U+00F6, U+00E0..U+00F6, U+00D8..U+00DE->U+00F8..U+00FE, U+00F8..U+00FE, U+0100->U+0101, U+0101, U+0102->U+0103, U+0103, U+0104->U+0105, U+0105, U+0106->U+0107, U+0107, U+0108->U+0109, U+0109, U+010A->U+010B, U+010B, U+010C->U+010D, U+010D, U+010E->U+010F, U+010F, U+0110->U+0111, U+0111, U+0112->U+0113, U+0113, U+0114->U+0115, U+0115, U+0116->U+0117, U+0117, U+0118->U+0119, U+0119, U+011A->U+011B, U+011B, U+011C->U+011D, U+011D, U+011E->U+011F, U+011F, U+0130->U+0131, U+0131, U+0132->U+0133, U+0133, U+0134->U+0135, U+0135, U+0136->U+0137, U+0137, U+0139->U+013A, U+013A, U+013B->U+013C, U+013C, U+013D->U+013E, U+013E, U+013F->U+0140, U+0140, U+0141->U+0142, U+0142, U+0143->U+0144, U+0144, U+0145->U+0146, U+0146, U+0147->U+0148, U+0148, U+014A->U+014B, U+014B, U+014C->U+014D, U+014D, U+014E->U+014F, U+014F, U+0150->U+0151, U+0151, U+0152->U+0153, U+0153, U+0154->U+0155, U+0155, U+0156->U+0157, U+0157, U+0158->U+0159, U+0159, U+015A->U+015B, U+015B, U+015C->U+015D, U+015D, U+015E->U+015F, U+015F, U+0160->U+0161, U+0161, U+0162->U+0163, U+0163, U+0164->U+0165, U+0165, U+0166->U+0167, U+0167, U+0168->U+0169, U+0169, U+016A->U+016B, U+016B, U+016C->U+016D, U+016D, U+016E->U+016F, U+016F, U+0170->U+0171, U+0171, U+0172->U+0173, U+0173, U+0174->U+0175, U+0175, U+0176->U+0177, U+0177, U+0178->U+00FF, U+00FF, U+0179->U+017A, U+017A, U+017B->U+017C, U+017C, U+017D->U+017E, U+017E, U+0410..U+042F->U+0430..U+044F, U+0430..U+044F, U+4E00..U+9FFF - min_prefix_len = 0 - min_infix_len = 0 + ignore_chars = U+0027, U+002C + min_prefix_len = 3 # Minimum number of characters for wildcard searches by prefix (min 1). Default is 3. If specified, set min_infix_len to 0 + min_infix_len = 0 # Minimum number of characters for wildcard searches by infix (min 2). If specified, set min_prefix_len to 0 html_strip = 1 + index_exact_words = 0 # Set to 1 to enable exact search operator. Requires wordforms or morphology + blend_chars = U+23, U+24, U+25, U+26, U+40 } index index_phpbb_{SPHINX_ID}_delta : index_phpbb_{SPHINX_ID}_main { diff --git a/phpBB/docs/sphinx_exceptions.txt b/phpBB/docs/sphinx_exceptions.txt new file mode 100644 index 0000000000..5d5c342408 --- /dev/null +++ b/phpBB/docs/sphinx_exceptions.txt @@ -0,0 +1,97 @@ +# Sample tokenised exception file for phpBB using Sphinx search engine +# +# Exceptions allow one or more tokens to be mapped to a single keyword. +# Exceptions are defined BEFORE tokenisation and are therefore case sensitive and accept characters that would normally be excluded such as punctuation. +# Exceptions are applied to both indexing and searching, such that search queries for one mapped variation will find all others. +# List needs to be customised according to board and language requirements. +# Please remove all commented lines before use. +# +# See Sphinx documentation for further details: http://sphinxsearch.com/docs/current/conf-exceptions.html +# +# Examples: +# +# Acronyms and initialisms +U.S.A. => usa +u.s.a. => usa +U.S.A => usa +u.s.a => usa +USA => usa +U.S. => usa +u.s. => usa +U.S => usa +u.s => usa +US => usa +# Abbreviations using ampersand +profit & loss => p&l +profit and loss => p&l +P & L => p&l +P and L => p&l +p & l => p&l +p and l => p&l +# Ampersands +& => and +# Ordinals +1st => first +1ST => first +2nd => second +2ND => second +3rd => third +3RD => third +4th => fourth +4TH => fourth +5th => fifth +5TH => fifth +6th => sixth +6TH => sixth +7th => seventh +7TH => seventh +8th => eighth +8TH => eighth +9th => ninth +9TH => ninth +10th => tenth +10TH => tenth +# Numerals +1 => one +2 => two +3 => three +4 => four +5 => five +6 => six +7 => seven +8 => eight +9 => nine +10 => ten +11 => eleven +12 => twelve +13 => thirteen +14 => fourteen +15 => fifteen +16 => sixteen +17 => seventeen +18 => eighteen +19 => nineteen +20 => twenty +30 => thirty +40 => forty +50 => fifty +60 => sixty +70 => seventy +80 => eighty +90 => ninety +100 => one hundred +1000 => one thousand +10000 => ten thousand +100000 => one hundred thousand +1000000 => one million +1000000000 => one billion +# Numbered groupings / decades +10s => tens +20s => twenties +30s => thirties +40s => forties +50s => fifties +60s => sixties +70s => seventies +80s => eighties +90s => nineties \ No newline at end of file diff --git a/phpBB/docs/sphinx_wordforms.txt b/phpBB/docs/sphinx_wordforms.txt new file mode 100644 index 0000000000..1fc5188441 --- /dev/null +++ b/phpBB/docs/sphinx_wordforms.txt @@ -0,0 +1,1752 @@ +# Sample wordforms file for phpBB using Sphinx search engine +# +# Wordform rules map different word forms to a single normal form. +# Wordforms are defined AFTER tokenisation and are therefore case insensitive and cannot contain ignored characters. +# Rules are applied during both indexing and searching, such that search queries for one mapped variation will find all others. +# Wordform rules are bypassed during search queries when using the exact word operator = before the relevant keyword or phrase. +# Wordforms are applied AFTER morphology, so if stemming or lemmatisation is used, then stemming will not be applied to words in this list. +# Wordform rules preceded by a tilde will be applied BEFORE morphology and will therefore obey stemming rules. +# For example, ~run > walk along with stem_en morphology enabled replaces 'run', 'running', 'runs' (and any other words that stem to just 'run') to 'walk' +# List needs to be customised according to board and language requirements. +# +# See Sphinx documentation for further details: http://sphinxsearch.com/docs/current/conf-wordforms.html +# +# This example file maps common British and American spelling variations together when stemming or lemmatisation is not enabled. +# +accessorise => accessorize +accessorised => accessorized +accessorises => accessorizes +accessorising => accessorizing +acclimatisation => acclimatization +acclimatise => acclimatize +acclimatised => acclimatized +acclimatises => acclimatizes +acclimatising => acclimatizing +accoutrements => accouterments +aeon => eon +aeons => eons +aerogramme => aerogram +aerogrammes => aerograms +aeroplane => airplane +aeroplanes => airplanes +aesthete => esthete +aesthetes => esthetes +aesthetic => esthetic +aesthetically => esthetically +aesthetics => esthetics +aetiology => etiology +ageing => aging +aggrandisement => aggrandizement +agonise => agonize +agonised => agonized +agonises => agonizes +agonising => agonizing +agonisingly => agonizingly +almanack => almanac +almanacks => almanacs +aluminium => aluminum +amortisable => amortizable +amortisation => amortization +amortisations => amortizations +amortise => amortize +amortised => amortized +amortises => amortizes +amortising => amortizing +amphitheatre => amphitheater +amphitheatres => amphitheaters +anaemia => anemia +anaemic => anemic +anaesthesia => anesthesia +anaesthetic => anesthetic +anaesthetics => anesthetics +anaesthetise => anesthetize +anaesthetised => anesthetized +anaesthetises => anesthetizes +anaesthetising => anesthetizing +anaesthetist => anesthetist +anaesthetists => anesthetists +anaesthetize => anesthetize +anaesthetized => anesthetized +anaesthetizes => anesthetizes +anaesthetizing => anesthetizing +analogue => analog +analogues => analogs +analyse => analyze +analysed => analyzed +analyses => analyzes +analysing => analyzing +anglicise => anglicize +anglicised => anglicized +anglicises => anglicizes +anglicising => anglicizing +annualised => annualized +antagonise => antagonize +antagonised => antagonized +antagonises => antagonizes +antagonising => antagonizing +apologise => apologize +apologised => apologized +apologises => apologizes +apologising => apologizing +appal => appall +appals => appalls +appetiser => appetizer +appetisers => appetizers +appetising => appetizing +appetisingly => appetizingly +arbour => arbor +arbours => arbors +archaeological => archeological +archaeologically => archeologically +archaeologist => archeologist +archaeologists => archeologists +archaeology => archeology +ardour => ardor +armour => armor +armoured => armored +armourer => armorer +armourers => armorers +armouries => armories +armoury => armory +artefact => artifact +artefacts => artifacts +authorise => authorize +authorised => authorized +authorises => authorizes +authorising => authorizing +axe => ax +backpedalled => backpedaled +backpedalling => backpedaling +bannister => banister +bannisters => banisters +baptise => baptize +baptised => baptized +baptises => baptizes +baptising => baptizing +bastardise => bastardize +bastardised => bastardized +bastardises => bastardizes +bastardising => bastardizing +battleaxe => battleax +baulk => balk +baulked => balked +baulking => balking +baulks => balks +bedevilled => bedeviled +bedevilling => bedeviling +behaviour => behavior +behavioural => behavioral +behaviourism => behaviorism +behaviourist => behaviorist +behaviourists => behaviorists +behaviours => behaviors +behove => behoove +behoved => behooved +behoves => behooves +bejewelled => bejeweled +belabour => belabor +belaboured => belabored +belabouring => belaboring +belabours => belabors +bevelled => beveled +bevvies => bevies +bevvy => bevy +biassed => biased +biassing => biasing +bingeing => binging +bougainvillaea => bougainvillea +bougainvillaeas => bougainvilleas +bowdlerise => bowdlerize +bowdlerised => bowdlerized +bowdlerises => bowdlerizes +bowdlerising => bowdlerizing +breathalyse => breathalyze +breathalysed => breathalyzed +breathalyser => breathalyzer +breathalysers => breathalyzers +breathalyses => breathalyzes +breathalysing => breathalyzing +brutalise => brutalize +brutalised => brutalized +brutalises => brutalizes +brutalising => brutalizing +buses => busses +busing => bussing +caesarean => cesarean +caesareans => cesareans +calibre => caliber +calibres => calibers +calliper => caliper +callipers => calipers +callisthenics => calisthenics +canalise => canalize +canalised => canalized +canalises => canalizes +canalising => canalizing +cancellation => cancelation +cancellations => cancelations +cancelled => canceled +cancelling => canceling +candour => candor +cannibalise => cannibalize +cannibalised => cannibalized +cannibalises => cannibalizes +cannibalising => cannibalizing +canonise => canonize +canonised => canonized +canonises => canonizes +canonising => canonizing +capitalise => capitalize +capitalised => capitalized +capitalises => capitalizes +capitalising => capitalizing +caramelise => caramelize +caramelised => caramelized +caramelises => caramelizes +caramelising => caramelizing +carbonise => carbonize +carbonised => carbonized +carbonises => carbonizes +carbonising => carbonizing +carolled => caroled +carolling => caroling +catalogue => catalog +catalogued => cataloged +catalogues => catalogs +cataloguing => cataloging +catalyse => catalyze +catalysed => catalyzed +catalyses => catalyzes +catalysing => catalyzing +categorise => categorize +categorised => categorized +categorises => categorizes +categorising => categorizing +cauterise => cauterize +cauterised => cauterized +cauterises => cauterizes +cauterising => cauterizing +cavilled => caviled +cavilling => caviling +centigramme => centigram +centigrammes => centigrams +centilitre => centiliter +centilitres => centiliters +centimetre => centimeter +centimetres => centimeters +centralise => centralize +centralised => centralized +centralises => centralizes +centralising => centralizing +centre => center +centred => centered +centrefold => centerfold +centrefolds => centerfolds +centrepiece => centerpiece +centrepieces => centerpieces +centres => centers +channelled => channeled +channelling => channeling +characterise => characterize +characterised => characterized +characterises => characterizes +characterising => characterizing +cheque => check +chequebook => checkbook +chequebooks => checkbooks +chequered => checkered +cheques => checks +chilli => chili +chimaera => chimera +chimaeras => chimeras +chiselled => chiseled +chiselling => chiseling +circularise => circularize +circularised => circularized +circularises => circularizes +circularising => circularizing +civilise => civilize +civilised => civilized +civilises => civilizes +civilising => civilizing +clamour => clamor +clamoured => clamored +clamouring => clamoring +clamours => clamors +clangour => clangor +clarinettist => clarinetist +clarinettists => clarinetists +collectivise => collectivize +collectivised => collectivized +collectivises => collectivizes +collectivising => collectivizing +colonisation => colonization +colonise => colonize +colonised => colonized +coloniser => colonizer +colonisers => colonizers +colonises => colonizes +colonising => colonizing +colour => color +colourant => colorant +colourants => colorants +coloured => colored +coloureds => coloreds +colourful => colorful +colourfully => colorfully +colouring => coloring +colourize => colorize +colourized => colorized +colourizes => colorizes +colourizing => colorizing +colourless => colorless +colours => colors +commercialise => commercialize +commercialised => commercialized +commercialises => commercializes +commercialising => commercializing +compartmentalise => compartmentalize +compartmentalised => compartmentalized +compartmentalises => compartmentalizes +compartmentalising => compartmentalizing +computerise => computerize +computerised => computerized +computerises => computerizes +computerising => computerizing +conceptualise => conceptualize +conceptualised => conceptualized +conceptualises => conceptualizes +conceptualising => conceptualizing +connexion => connection +connexions => connections +contextualise => contextualize +contextualised => contextualized +contextualises => contextualizes +contextualising => contextualizing +cosier => cozier +cosies => cozies +cosiest => coziest +cosily => cozily +cosiness => coziness +cosy => cozy +councillor => councilor +councillors => councilors +counselled => counseled +counselling => counseling +counsellor => counselor +counsellors => counselors +crenellated => crenelated +criminalise => criminalize +criminalised => criminalized +criminalises => criminalizes +criminalising => criminalizing +criticise => criticize +criticised => criticized +criticises => criticizes +criticising => criticizing +crueller => crueler +cruellest => cruelest +crystallisation => crystallization +crystallise => crystallize +crystallised => crystallized +crystallises => crystallizes +crystallising => crystallizing +cudgelled => cudgeled +cudgelling => cudgeling +customise => customize +customised => customized +customises => customizes +customising => customizing +cypher => cipher +cyphers => ciphers +decentralisation => decentralization +decentralise => decentralize +decentralised => decentralized +decentralises => decentralizes +decentralising => decentralizing +decriminalisation => decriminalization +decriminalise => decriminalize +decriminalised => decriminalized +decriminalises => decriminalizes +decriminalising => decriminalizing +defence => defense +defenceless => defenseless +defences => defenses +dehumanisation => dehumanization +dehumanise => dehumanize +dehumanised => dehumanized +dehumanises => dehumanizes +dehumanising => dehumanizing +demeanour => demeanor +demilitarisation => demilitarization +demilitarise => demilitarize +demilitarised => demilitarized +demilitarises => demilitarizes +demilitarising => demilitarizing +demobilisation => demobilization +demobilise => demobilize +demobilised => demobilized +demobilises => demobilizes +demobilising => demobilizing +democratisation => democratization +democratise => democratize +democratised => democratized +democratises => democratizes +democratising => democratizing +demonise => demonize +demonised => demonized +demonises => demonizes +demonising => demonizing +demoralisation => demoralization +demoralise => demoralize +demoralised => demoralized +demoralises => demoralizes +demoralising => demoralizing +denationalisation => denationalization +denationalise => denationalize +denationalised => denationalized +denationalises => denationalizes +denationalising => denationalizing +deodorise => deodorize +deodorised => deodorized +deodorises => deodorizes +deodorising => deodorizing +depersonalise => depersonalize +depersonalised => depersonalized +depersonalises => depersonalizes +depersonalising => depersonalizing +deputise => deputize +deputised => deputized +deputises => deputizes +deputising => deputizing +desensitisation => desensitization +desensitise => desensitize +desensitised => desensitized +desensitises => desensitizes +desensitising => desensitizing +destabilisation => destabilization +destabilise => destabilize +destabilised => destabilized +destabilises => destabilizes +destabilising => destabilizing +dialled => dialed +dialling => dialing +dialogue => dialog +dialogues => dialogs +diarrhoea => diarrhea +digitise => digitize +digitised => digitized +digitises => digitizes +digitising => digitizing +disc => disk +discolour => discolor +discoloured => discolored +discolouring => discoloring +discolours => discolors +discs => disks +disembowelled => disemboweled +disembowelling => disemboweling +disfavour => disfavor +dishevelled => disheveled +dishonour => dishonor +dishonourable => dishonorable +dishonourably => dishonorably +dishonoured => dishonored +dishonouring => dishonoring +dishonours => dishonors +disorganisation => disorganization +disorganised => disorganized +distil => distill +distils => distills +dramatisation => dramatization +dramatisations => dramatizations +dramatise => dramatize +dramatised => dramatized +dramatises => dramatizes +dramatising => dramatizing +draught => draft +draughtboard => draftboard +draughtboards => draftboards +draughtier => draftier +draughtiest => draftiest +draughts => drafts +draughtsman => draftsman +draughtsmanship => draftsmanship +draughtsmen => draftsmen +draughtswoman => draftswoman +draughtswomen => draftswomen +draughty => drafty +drivelled => driveled +drivelling => driveling +duelled => dueled +duelling => dueling +economise => economize +economised => economized +economises => economizes +economising => economizing +edoema => edema +editorialise => editorialize +editorialised => editorialized +editorialises => editorializes +editorialising => editorializing +empathise => empathize +empathised => empathized +empathises => empathizes +empathising => empathizing +emphasise => emphasize +emphasised => emphasized +emphasises => emphasizes +emphasising => emphasizing +enamelled => enameled +enamelling => enameling +enamoured => enamored +encyclopaedia => encyclopedia +encyclopaedias => encyclopedias +encyclopaedic => encyclopedic +endeavour => endeavor +endeavoured => endeavored +endeavouring => endeavoring +endeavours => endeavors +energise => energize +energised => energized +energises => energizes +energising => energizing +enrol => enroll +enrols => enrolls +enthral => enthrall +enthrals => enthralls +epaulette => epaulet +epaulettes => epaulets +epicentre => epicenter +epicentres => epicenters +epilogue => epilog +epilogues => epilogs +epitomise => epitomize +epitomised => epitomized +epitomises => epitomizes +epitomising => epitomizing +equalisation => equalization +equalise => equalize +equalised => equalized +equaliser => equalizer +equalisers => equalizers +equalises => equalizes +equalising => equalizing +eulogise => eulogize +eulogised => eulogized +eulogises => eulogizes +eulogising => eulogizing +evangelise => evangelize +evangelised => evangelized +evangelises => evangelizes +evangelising => evangelizing +exorcise => exorcize +exorcised => exorcized +exorcises => exorcizes +exorcising => exorcizing +extemporisation => extemporization +extemporise => extemporize +extemporised => extemporized +extemporises => extemporizes +extemporising => extemporizing +externalisation => externalization +externalisations => externalizations +externalise => externalize +externalised => externalized +externalises => externalizes +externalising => externalizing +factorise => factorize +factorised => factorized +factorises => factorizes +factorising => factorizing +faecal => fecal +faeces => feces +familiarisation => familiarization +familiarise => familiarize +familiarised => familiarized +familiarises => familiarizes +familiarising => familiarizing +fantasise => fantasize +fantasised => fantasized +fantasises => fantasizes +fantasising => fantasizing +favour => favor +favourable => favorable +favourably => favorably +favoured => favored +favouring => favoring +favourite => favorite +favourites => favorites +favouritism => favoritism +favours => favors +feminise => feminize +feminised => feminized +feminises => feminizes +feminising => feminizing +fertilisation => fertilization +fertilise => fertilize +fertilised => fertilized +fertiliser => fertilizer +fertilisers => fertilizers +fertilises => fertilizes +fertilising => fertilizing +fervour => fervor +fibre => fiber +fibreglass => fiberglass +fibres => fibers +fictionalisation => fictionalization +fictionalisations => fictionalizations +fictionalise => fictionalize +fictionalised => fictionalized +fictionalises => fictionalizes +fictionalising => fictionalizing +fillet => filet +filleted => fileted +filleting => fileting +fillets => filets +finalisation => finalization +finalise => finalize +finalised => finalized +finalises => finalizes +finalising => finalizing +flautist => flutist +flautists => flutists +flavour => flavor +flavoured => flavored +flavouring => flavoring +flavourings => flavorings +flavourless => flavorless +flavours => flavors +flavoursome => flavorsome +flyer / flier => flier / flyer +foetal => fetal +foetid => fetid +foetus => fetus +foetuses => fetuses +formalisation => formalization +formalise => formalize +formalised => formalized +formalises => formalizes +formalising => formalizing +fossilisation => fossilization +fossilise => fossilize +fossilised => fossilized +fossilises => fossilizes +fossilising => fossilizing +fraternisation => fraternization +fraternise => fraternize +fraternised => fraternized +fraternises => fraternizes +fraternising => fraternizing +fulfil => fulfill +fulfilment => fulfillment +fulfils => fulfills +funnelled => funneled +funnelling => funneling +galvanise => galvanize +galvanised => galvanized +galvanises => galvanizes +galvanising => galvanizing +gambolled => gamboled +gambolling => gamboling +gaol => jail +gaolbird => jailbird +gaolbirds => jailbirds +gaolbreak => jailbreak +gaolbreaks => jailbreaks +gaoled => jailed +gaoler => jailer +gaolers => jailers +gaoling => jailing +gaols => jails +gases => gasses +gauge => gage +gauged => gaged +gauges => gages +gauging => gaging +generalisation => generalization +generalisations => generalizations +generalise => generalize +generalised => generalized +generalises => generalizes +generalising => generalizing +ghettoise => ghettoize +ghettoised => ghettoized +ghettoises => ghettoizes +ghettoising => ghettoizing +gipsies => gypsies +glamorise => glamorize +glamorised => glamorized +glamorises => glamorizes +glamorising => glamorizing +glamour => glamor +globalisation => globalization +globalise => globalize +globalised => globalized +globalises => globalizes +globalising => globalizing +glueing => gluing +goitre => goiter +goitres => goiters +gonorrhoea => gonorrhea +gramme => gram +grammes => grams +gravelled => graveled +grey => gray +greyed => grayed +greying => graying +greyish => grayish +greyness => grayness +greys => grays +grovelled => groveled +grovelling => groveling +groyne => groin +groynes => groins +gruelling => grueling +gruellingly => gruelingly +gryphon => griffin +gryphons => griffins +gynaecological => gynecological +gynaecologist => gynecologist +gynaecologists => gynecologists +gynaecology => gynecology +haematological => hematological +haematologist => hematologist +haematologists => hematologists +haematology => hematology +haemoglobin => hemoglobin +haemophilia => hemophilia +haemophiliac => hemophiliac +haemophiliacs => hemophiliacs +haemorrhage => hemorrhage +haemorrhaged => hemorrhaged +haemorrhages => hemorrhages +haemorrhaging => hemorrhaging +haemorrhoids => hemorrhoids +harbour => harbor +harboured => harbored +harbouring => harboring +harbours => harbors +harmonisation => harmonization +harmonise => harmonize +harmonised => harmonized +harmonises => harmonizes +harmonising => harmonizing +homoeopath => homeopath +homoeopathic => homeopathic +homoeopaths => homeopaths +homoeopathy => homeopathy +homogenise => homogenize +homogenised => homogenized +homogenises => homogenizes +homogenising => homogenizing +honour => honor +honourable => honorable +honourably => honorably +honoured => honored +honouring => honoring +honours => honors +hospitalisation => hospitalization +hospitalise => hospitalize +hospitalised => hospitalized +hospitalises => hospitalizes +hospitalising => hospitalizing +humanise => humanize +humanised => humanized +humanises => humanizes +humanising => humanizing +humour => humor +humoured => humored +humouring => humoring +humourless => humorless +humours => humors +hybridise => hybridize +hybridised => hybridized +hybridises => hybridizes +hybridising => hybridizing +hypnotise => hypnotize +hypnotised => hypnotized +hypnotises => hypnotizes +hypnotising => hypnotizing +hypothesise => hypothesize +hypothesised => hypothesized +hypothesises => hypothesizes +hypothesising => hypothesizing +idealisation => idealization +idealise => idealize +idealised => idealized +idealises => idealizes +idealising => idealizing +idolise => idolize +idolised => idolized +idolises => idolizes +idolising => idolizing +immobilisation => immobilization +immobilise => immobilize +immobilised => immobilized +immobiliser => immobilizer +immobilisers => immobilizers +immobilises => immobilizes +immobilising => immobilizing +immortalise => immortalize +immortalised => immortalized +immortalises => immortalizes +immortalising => immortalizing +immunisation => immunization +immunise => immunize +immunised => immunized +immunises => immunizes +immunising => immunizing +impanelled => impaneled +impanelling => impaneling +imperilled => imperiled +imperilling => imperiling +individualise => individualize +individualised => individualized +individualises => individualizes +individualising => individualizing +industrialise => industrialize +industrialised => industrialized +industrialises => industrializes +industrialising => industrializing +inflexion => inflection +inflexions => inflections +initialise => initialize +initialised => initialized +initialises => initializes +initialising => initializing +initialled => initialed +initialling => initialing +instal => install +instalment => installment +instalments => installments +instals => installs +instil => instill +instils => instills +institutionalisation => institutionalization +institutionalise => institutionalize +institutionalised => institutionalized +institutionalises => institutionalizes +institutionalising => institutionalizing +intellectualise => intellectualize +intellectualised => intellectualized +intellectualises => intellectualizes +intellectualising => intellectualizing +internalisation => internalization +internalise => internalize +internalised => internalized +internalises => internalizes +internalising => internalizing +internationalisation => internationalization +internationalise => internationalize +internationalised => internationalized +internationalises => internationalizes +internationalising => internationalizing +ionisation => ionization +ionise => ionize +ionised => ionized +ioniser => ionizer +ionisers => ionizers +ionises => ionizes +ionising => ionizing +italicise => italicize +italicised => italicized +italicises => italicizes +italicising => italicizing +itemise => itemize +itemised => itemized +itemises => itemizes +itemising => itemizing +jeopardise => jeopardize +jeopardised => jeopardized +jeopardises => jeopardizes +jeopardising => jeopardizing +jewelled => jeweled +jeweller => jeweler +jewellers => jewelers +jewellery => jewelry +judgement => judgment +kilogramme => kilogram +kilogrammes => kilograms +kilometre => kilometer +kilometres => kilometers +labelled => labeled +labelling => labeling +labour => labor +laboured => labored +labourer => laborer +labourers => laborers +labouring => laboring +labours => labors +lacklustre => lackluster +legalisation => legalization +legalise => legalize +legalised => legalized +legalises => legalizes +legalising => legalizing +legitimise => legitimize +legitimised => legitimized +legitimises => legitimizes +legitimising => legitimizing +leukaemia => leukemia +levelled => leveled +leveller => leveler +levellers => levelers +levelling => leveling +libelled => libeled +libelling => libeling +libellous => libelous +liberalisation => liberalization +liberalise => liberalize +liberalised => liberalized +liberalises => liberalizes +liberalising => liberalizing +licence => license +licenced => licensed +licences => licenses +licencing => licensing +likeable => likable +lionisation => lionization +lionise => lionize +lionised => lionized +lionises => lionizes +lionising => lionizing +liquidise => liquidize +liquidised => liquidized +liquidiser => liquidizer +liquidisers => liquidizers +liquidises => liquidizes +liquidising => liquidizing +litre => liter +litres => liters +localise => localize +localised => localized +localises => localizes +localising => localizing +louvre => louver +louvred => louvered +louvres => louvers +lustre => luster +magnetise => magnetize +magnetised => magnetized +magnetises => magnetizes +magnetising => magnetizing +manoeuvrability => maneuverability +manoeuvrable => maneuverable +manoeuvre => maneuver +manoeuvred => maneuvered +manoeuvres => maneuvers +manoeuvring => maneuvering +manoeuvrings => maneuverings +marginalisation => marginalization +marginalise => marginalize +marginalised => marginalized +marginalises => marginalizes +marginalising => marginalizing +marshalled => marshaled +marshalling => marshaling +marvelled => marveled +marvelling => marveling +marvellous => marvelous +marvellously => marvelously +materialisation => materialization +materialise => materialize +materialised => materialized +materialises => materializes +materialising => materializing +maximisation => maximization +maximise => maximize +maximised => maximized +maximises => maximizes +maximising => maximizing +meagre => meager +mechanisation => mechanization +mechanise => mechanize +mechanised => mechanized +mechanises => mechanizes +mechanising => mechanizing +mediaeval => medieval +memorialise => memorialize +memorialised => memorialized +memorialises => memorializes +memorialising => memorializing +memorise => memorize +memorised => memorized +memorises => memorizes +memorising => memorizing +mesmerise => mesmerize +mesmerised => mesmerized +mesmerises => mesmerizes +mesmerising => mesmerizing +metabolise => metabolize +metabolised => metabolized +metabolises => metabolizes +metabolising => metabolizing +metre => meter +metres => meters +micrometre => micrometer +micrometres => micrometers +militarise => militarize +militarised => militarized +militarises => militarizes +militarising => militarizing +milligramme => milligram +milligrammes => milligrams +millilitre => milliliter +millilitres => milliliters +millimetre => millimeter +millimetres => millimeters +miniaturisation => miniaturization +miniaturise => miniaturize +miniaturised => miniaturized +miniaturises => miniaturizes +miniaturising => miniaturizing +minibuses => minibusses +minimise => minimize +minimised => minimized +minimises => minimizes +minimising => minimizing +misbehaviour => misbehavior +misdemeanour => misdemeanor +misdemeanours => misdemeanors +misspelt => misspelled +mitre => miter +mitres => miters +mobilisation => mobilization +mobilise => mobilize +mobilised => mobilized +mobilises => mobilizes +mobilising => mobilizing +modelled => modeled +modeller => modeler +modellers => modelers +modelling => modeling +modernise => modernize +modernised => modernized +modernises => modernizes +modernising => modernizing +moisturise => moisturize +moisturised => moisturized +moisturiser => moisturizer +moisturisers => moisturizers +moisturises => moisturizes +moisturising => moisturizing +monologue => monolog +monologues => monologs +monopolisation => monopolization +monopolise => monopolize +monopolised => monopolized +monopolises => monopolizes +monopolising => monopolizing +moralise => moralize +moralised => moralized +moralises => moralizes +moralising => moralizing +motorised => motorized +mould => mold +moulded => molded +moulder => molder +mouldered => moldered +mouldering => moldering +moulders => molders +mouldier => moldier +mouldiest => moldiest +moulding => molding +mouldings => moldings +moulds => molds +mouldy => moldy +moult => molt +moulted => molted +moulting => molting +moults => molts +moustache => mustache +moustached => mustached +moustaches => mustaches +moustachioed => mustachioed +multicoloured => multicolored +nationalisation => nationalization +nationalisations => nationalizations +nationalise => nationalize +nationalised => nationalized +nationalises => nationalizes +nationalising => nationalizing +naturalisation => naturalization +naturalise => naturalize +naturalised => naturalized +naturalises => naturalizes +naturalising => naturalizing +neighbour => neighbor +neighbourhood => neighborhood +neighbourhoods => neighborhoods +neighbouring => neighboring +neighbourliness => neighborliness +neighbourly => neighborly +neighbours => neighbors +neutralisation => neutralization +neutralise => neutralize +neutralised => neutralized +neutralises => neutralizes +neutralising => neutralizing +normalisation => normalization +normalise => normalize +normalised => normalized +normalises => normalizes +normalising => normalizing +odour => odor +odourless => odorless +odours => odors +oesophagus => esophagus +oesophaguses => esophaguses +oestrogen => estrogen +offence => offense +offences => offenses +omelette => omelet +omelettes => omelets +optimise => optimize +optimised => optimized +optimises => optimizes +optimising => optimizing +organisation => organization +organisational => organizational +organisations => organizations +organise => organize +organised => organized +organiser => organizer +organisers => organizers +organises => organizes +organising => organizing +orthopaedic => orthopedic +orthopaedics => orthopedics +ostracise => ostracize +ostracised => ostracized +ostracises => ostracizes +ostracising => ostracizing +outmanoeuvre => outmaneuver +outmanoeuvred => outmaneuvered +outmanoeuvres => outmaneuvers +outmanoeuvring => outmaneuvering +overemphasise => overemphasize +overemphasised => overemphasized +overemphasises => overemphasizes +overemphasising => overemphasizing +oxidisation => oxidization +oxidise => oxidize +oxidised => oxidized +oxidises => oxidizes +oxidising => oxidizing +paederast => pederast +paederasts => pederasts +paediatric => pediatric +paediatrician => pediatrician +paediatricians => pediatricians +paediatrics => pediatrics +paedophile => pedophile +paedophiles => pedophiles +paedophilia => pedophilia +palaeolithic => paleolithic +palaeontologist => paleontologist +palaeontologists => paleontologists +palaeontology => paleontology +panelled => paneled +panelling => paneling +panellist => panelist +panellists => panelists +paralyse => paralyze +paralysed => paralyzed +paralyses => paralyzes +paralysing => paralyzing +parcelled => parceled +parcelling => parceling +parlour => parlor +parlours => parlors +particularise => particularize +particularised => particularized +particularises => particularizes +particularising => particularizing +passivisation => passivization +passivise => passivize +passivised => passivized +passivises => passivizes +passivising => passivizing +pasteurisation => pasteurization +pasteurise => pasteurize +pasteurised => pasteurized +pasteurises => pasteurizes +pasteurising => pasteurizing +patronise => patronize +patronised => patronized +patronises => patronizes +patronising => patronizing +patronisingly => patronizingly +pedalled => pedaled +pedalling => pedaling +pedestrianisation => pedestrianization +pedestrianise => pedestrianize +pedestrianised => pedestrianized +pedestrianises => pedestrianizes +pedestrianising => pedestrianizing +penalise => penalize +penalised => penalized +penalises => penalizes +penalising => penalizing +pencilled => penciled +pencilling => penciling +personalise => personalize +personalised => personalized +personalises => personalizes +personalising => personalizing +pharmacopoeia => pharmacopeia +pharmacopoeias => pharmacopeias +philosophise => philosophize +philosophised => philosophized +philosophises => philosophizes +philosophising => philosophizing +philtre => filter +philtres => filters +phoney => phony +plagiarise => plagiarize +plagiarised => plagiarized +plagiarises => plagiarizes +plagiarising => plagiarizing +plough => plow +ploughed => plowed +ploughing => plowing +ploughman => plowman +ploughmen => plowmen +ploughs => plows +ploughshare => plowshare +ploughshares => plowshares +polarisation => polarization +polarise => polarize +polarised => polarized +polarises => polarizes +polarising => polarizing +politicisation => politicization +politicise => politicize +politicised => politicized +politicises => politicizes +politicising => politicizing +popularisation => popularization +popularise => popularize +popularised => popularized +popularises => popularizes +popularising => popularizing +pouffe => pouf +pouffes => poufs +practise => practice +practised => practiced +practises => practices +practising => practicing +praesidium => presidium +praesidiums => presidiums +pressurisation => pressurization +pressurise => pressurize +pressurised => pressurized +pressurises => pressurizes +pressurising => pressurizing +pretence => pretense +pretences => pretenses +primaeval => primeval +prioritisation => prioritization +prioritise => prioritize +prioritised => prioritized +prioritises => prioritizes +prioritising => prioritizing +privatisation => privatization +privatisations => privatizations +privatise => privatize +privatised => privatized +privatises => privatizes +privatising => privatizing +professionalisation => professionalization +professionalise => professionalize +professionalised => professionalized +professionalises => professionalizes +professionalising => professionalizing +programme => program +programmes => programs +prologue => prolog +prologues => prologs +propagandise => propagandize +propagandised => propagandized +propagandises => propagandizes +propagandising => propagandizing +proselytise => proselytize +proselytised => proselytized +proselytiser => proselytizer +proselytisers => proselytizers +proselytises => proselytizes +proselytising => proselytizing +psychoanalyse => psychoanalyze +psychoanalysed => psychoanalyzed +psychoanalyses => psychoanalyzes +psychoanalysing => psychoanalyzing +publicise => publicize +publicised => publicized +publicises => publicizes +publicising => publicizing +pulverisation => pulverization +pulverise => pulverize +pulverised => pulverized +pulverises => pulverizes +pulverising => pulverizing +pummelled => pummel +pummelling => pummeled +pyjama => pajama +pyjamas => pajamas +pzazz => pizzazz +quarrelled => quarreled +quarrelling => quarreling +radicalise => radicalize +radicalised => radicalized +radicalises => radicalizes +radicalising => radicalizing +rancour => rancor +randomise => randomize +randomised => randomized +randomises => randomizes +randomising => randomizing +rationalisation => rationalization +rationalisations => rationalizations +rationalise => rationalize +rationalised => rationalized +rationalises => rationalizes +rationalising => rationalizing +ravelled => raveled +ravelling => raveling +realisable => realizable +realisation => realization +realisations => realizations +realise => realize +realised => realized +realises => realizes +realising => realizing +recognisable => recognizable +recognisably => recognizably +recognisance => recognizance +recognise => recognize +recognised => recognized +recognises => recognizes +recognising => recognizing +reconnoitre => reconnoiter +reconnoitred => reconnoitered +reconnoitres => reconnoiters +reconnoitring => reconnoitering +refuelled => refueled +refuelling => refueling +regularisation => regularization +regularise => regularize +regularised => regularized +regularises => regularizes +regularising => regularizing +remodelled => remodeled +remodelling => remodeling +remould => remold +remoulded => remolded +remoulding => remolding +remoulds => remolds +reorganisation => reorganization +reorganisations => reorganizations +reorganise => reorganize +reorganised => reorganized +reorganises => reorganizes +reorganising => reorganizing +revelled => reveled +reveller => reveler +revellers => revelers +revelling => reveling +revitalise => revitalize +revitalised => revitalized +revitalises => revitalizes +revitalising => revitalizing +revolutionise => revolutionize +revolutionised => revolutionized +revolutionises => revolutionizes +revolutionising => revolutionizing +rhapsodise => rhapsodize +rhapsodised => rhapsodized +rhapsodises => rhapsodizes +rhapsodising => rhapsodizing +rigour => rigor +rigours => rigors +ritualised => ritualized +rivalled => rivaled +rivalling => rivaling +romanticise => romanticize +romanticised => romanticized +romanticises => romanticizes +romanticising => romanticizing +rumour => rumor +rumoured => rumored +rumours => rumors +sabre => saber +sabres => sabers +saltpetre => saltpeter +sanitise => sanitize +sanitised => sanitized +sanitises => sanitizes +sanitising => sanitizing +satirise => satirize +satirised => satirized +satirises => satirizes +satirising => satirizing +saviour => savior +saviours => saviors +savour => savor +savoured => savored +savouries => savories +savouring => savoring +savours => savors +savoury => savory +scandalise => scandalize +scandalised => scandalized +scandalises => scandalizes +scandalising => scandalizing +sceptic => skeptic +sceptical => skeptical +sceptically => skeptically +scepticism => skepticism +sceptics => skeptics +sceptre => scepter +sceptres => scepters +scrutinise => scrutinize +scrutinised => scrutinized +scrutinises => scrutinizes +scrutinising => scrutinizing +secularisation => secularization +secularise => secularize +secularised => secularized +secularises => secularizes +secularising => secularizing +sensationalise => sensationalize +sensationalised => sensationalized +sensationalises => sensationalizes +sensationalising => sensationalizing +sensitise => sensitize +sensitised => sensitized +sensitises => sensitizes +sensitising => sensitizing +sentimentalise => sentimentalize +sentimentalised => sentimentalized +sentimentalises => sentimentalizes +sentimentalising => sentimentalizing +sepulchre => sepulcher +sepulchres => sepulchers +serialisation => serialization +serialisations => serializations +serialise => serialize +serialised => serialized +serialises => serializes +serialising => serializing +sermonise => sermonize +sermonised => sermonized +sermonises => sermonizes +sermonising => sermonizing +sheikh => sheik +shovelled => shoveled +shovelling => shoveling +shrivelled => shriveled +shrivelling => shriveling +signalise => signalize +signalised => signalized +signalises => signalizes +signalising => signalizing +signalled => signaled +signalling => signaling +smoulder => smolder +smouldered => smoldered +smouldering => smoldering +smoulders => smolders +snivelled => sniveled +snivelling => sniveling +snorkelled => snorkeled +snorkelling => snorkeling +snowplough => snowplow +snowploughs => snowplow +socialisation => socialization +socialise => socialize +socialised => socialized +socialises => socializes +socialising => socializing +sodomise => sodomize +sodomised => sodomized +sodomises => sodomizes +sodomising => sodomizing +solemnise => solemnize +solemnised => solemnized +solemnises => solemnizes +solemnising => solemnizing +sombre => somber +specialisation => specialization +specialisations => specializations +specialise => specialize +specialised => specialized +specialises => specializes +specialising => specializing +spectre => specter +spectres => specters +spiralled => spiraled +spiralling => spiraling +splendour => splendor +splendours => splendors +squirrelled => squirreled +squirrelling => squirreling +stabilisation => stabilization +stabilise => stabilize +stabilised => stabilized +stabiliser => stabilizer +stabilisers => stabilizers +stabilises => stabilizes +stabilising => stabilizing +standardisation => standardization +standardise => standardize +standardised => standardized +standardises => standardizes +standardising => standardizing +stencilled => stenciled +stencilling => stenciling +sterilisation => sterilization +sterilisations => sterilizations +sterilise => sterilize +sterilised => sterilized +steriliser => sterilizer +sterilisers => sterilizers +sterilises => sterilizes +sterilising => sterilizing +stigmatisation => stigmatization +stigmatise => stigmatize +stigmatised => stigmatized +stigmatises => stigmatizes +stigmatising => stigmatizing +storey => story +storeys => stories +subsidisation => subsidization +subsidise => subsidize +subsidised => subsidized +subsidiser => subsidizer +subsidisers => subsidizers +subsidises => subsidizes +subsidising => subsidizing +succour => succor +succoured => succored +succouring => succoring +succours => succors +sulphate => sulfate +sulphates => sulfates +sulphide => sulfide +sulphides => sulfides +sulphur => sulfur +sulphurous => sulfurous +summarise => summarize +summarised => summarized +summarises => summarizes +summarising => summarizing +swivelled => swiveled +swivelling => swiveling +symbolise => symbolize +symbolised => symbolized +symbolises => symbolizes +symbolising => symbolizing +sympathise => sympathize +sympathised => sympathized +sympathiser => sympathizer +sympathisers => sympathizers +sympathises => sympathizes +sympathising => sympathizing +synchronisation => synchronization +synchronise => synchronize +synchronised => synchronized +synchronises => synchronizes +synchronising => synchronizing +synthesise => synthesize +synthesised => synthesized +synthesiser => synthesizer +synthesisers => synthesizers +synthesises => synthesizes +synthesising => synthesizing +syphon => siphon +syphoned => siphoned +syphoning => siphoning +syphons => siphons +systematisation => systematization +systematise => systematize +systematised => systematized +systematises => systematizes +systematising => systematizing +tantalise => tantalize +tantalised => tantalized +tantalises => tantalizes +tantalising => tantalizing +tantalisingly => tantalizingly +tasselled => tasseled +technicolour => technicolor +temporise => temporize +temporised => temporized +temporises => temporizes +temporising => temporizing +tenderise => tenderize +tenderised => tenderized +tenderises => tenderizes +tenderising => tenderizing +terrorise => terrorize +terrorised => terrorized +terrorises => terrorizes +terrorising => terrorizing +theatre => theater +theatregoer => theatergoer +theatregoers => theatergoers +theatres => theaters +theorise => theorize +theorised => theorized +theorises => theorizes +theorising => theorizing +tonne => ton +tonnes => tons +towelled => toweled +towelling => toweling +toxaemia => toxemia +tranquillise => tranquilize +tranquillised => tranquilized +tranquilliser => tranquilizer +tranquillisers => tranquilizers +tranquillises => tranquilizes +tranquillising => tranquilizing +tranquillity => tranquility +tranquillize => tranquilize +tranquillized => tranquilized +tranquillizer => tranquilizer +tranquillizers => tranquilizers +tranquillizes => tranquilizes +tranquillizing => tranquilizing +tranquilly => tranquility +transistorised => transistorized +traumatise => traumatize +traumatised => traumatized +traumatises => traumatizes +traumatising => traumatizing +travelled => traveled +traveller => traveler +travellers => travelers +travelling => traveling +travelogue => travelog +travelogues => travelogs +trialled => trialed +trialling => trialing +tricolour => tricolor +tricolours => tricolors +trivialise => trivialize +trivialised => trivialized +trivialises => trivializes +trivialising => trivializing +tumour => tumor +tumours => tumors +tunnelled => tunneled +tunnelling => tunneling +tyrannise => tyrannize +tyrannised => tyrannized +tyrannises => tyrannizes +tyrannising => tyrannizing +tyre => tire +tyres => tires +unauthorised => unauthorized +uncivilised => uncivilized +underutilised => underutilized +unequalled => unequaled +unfavourable => unfavorable +unfavourably => unfavorably +unionisation => unionization +unionise => unionize +unionised => unionized +unionises => unionizes +unionising => unionizing +unorganised => unorganized +unravelled => unraveled +unravelling => unraveling +unrecognisable => unrecognizable +unrecognised => unrecognized +unrivalled => unrivaled +unsavoury => unsavory +untrammelled => untrammeled +urbanisation => urbanization +urbanise => urbanize +urbanised => urbanized +urbanises => urbanizes +urbanising => urbanizing +utilisable => utilizable +utilisation => utilization +utilise => utilize +utilised => utilized +utilises => utilizes +utilising => utilizing +valour => valor +vandalise => vandalize +vandalised => vandalized +vandalises => vandalizes +vandalising => vandalizing +vaporisation => vaporization +vaporise => vaporize +vaporised => vaporized +vaporises => vaporizes +vaporising => vaporizing +vapour => vapor +vapours => vapors +verbalise => verbalize +verbalised => verbalized +verbalises => verbalizes +verbalising => verbalizing +victimisation => victimization +victimise => victimize +victimised => victimized +victimises => victimizes +victimising => victimizing +videodisc => videodisk +videodiscs => videodisks +vigour => vigor +visualisation => visualization +visualisations => visualizations +visualise => visualize +visualised => visualized +visualises => visualizes +visualising => visualizing +vocalisation => vocalization +vocalisations => vocalizations +vocalise => vocalize +vocalised => vocalized +vocalises => vocalizes +vocalising => vocalizing +vulcanised => vulcanized +vulgarisation => vulgarization +vulgarise => vulgarize +vulgarised => vulgarized +vulgarises => vulgarizes +vulgarising => vulgarizing +waggon => wagon +waggons => wagons +watercolour => watercolor +watercolours => watercolors +weaselled => weaseled +weaselling => weaseling +westernisation => westernization +westernise => westernize +westernised => westernized +westernises => westernizes +westernising => westernizing +womanise => womanize +womanised => womanized +womaniser => womanizer +womanisers => womanizers +womanises => womanizes +womanising => womanizing +woollen => woolen +woollens => woolens +woollies => woolies +woolly => wooly +worshipped => worshiped +worshipping => worshiping +worshipper => worshiper +yodelled => yodeled +yodelling => yodeling +yoghourt => yogurt +yoghourts => yogurts +yoghurt => yogurt +yoghurts => yogurts diff --git a/phpBB/phpbb/search/fulltext_sphinx.php b/phpBB/phpbb/search/fulltext_sphinx.php index d2e12fd7c0..f62930cfe0 100644 --- a/phpBB/phpbb/search/fulltext_sphinx.php +++ b/phpBB/phpbb/search/fulltext_sphinx.php @@ -331,11 +331,16 @@ class fulltext_sphinx array('docinfo', 'extern'), array('morphology', 'none'), array('stopwords', ''), + array('wordforms', ' # optional, specify path to wordforms file. See ./docs/sphinx_wordforms.txt for example'), + array('exceptions', ' # optional, specify path to exceptions file. See ./docs/sphinx_exceptions.txt for example'), array('min_word_len', '2'), array('charset_table', 'U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z, A..Z->a..z, a..z, U+0149, U+017F, U+0138, U+00DF, U+00FF, U+00C0..U+00D6->U+00E0..U+00F6, U+00E0..U+00F6, U+00D8..U+00DE->U+00F8..U+00FE, U+00F8..U+00FE, U+0100->U+0101, U+0101, U+0102->U+0103, U+0103, U+0104->U+0105, U+0105, U+0106->U+0107, U+0107, U+0108->U+0109, U+0109, U+010A->U+010B, U+010B, U+010C->U+010D, U+010D, U+010E->U+010F, U+010F, U+0110->U+0111, U+0111, U+0112->U+0113, U+0113, U+0114->U+0115, U+0115, U+0116->U+0117, U+0117, U+0118->U+0119, U+0119, U+011A->U+011B, U+011B, U+011C->U+011D, U+011D, U+011E->U+011F, U+011F, U+0130->U+0131, U+0131, U+0132->U+0133, U+0133, U+0134->U+0135, U+0135, U+0136->U+0137, U+0137, U+0139->U+013A, U+013A, U+013B->U+013C, U+013C, U+013D->U+013E, U+013E, U+013F->U+0140, U+0140, U+0141->U+0142, U+0142, U+0143->U+0144, U+0144, U+0145->U+0146, U+0146, U+0147->U+0148, U+0148, U+014A->U+014B, U+014B, U+014C->U+014D, U+014D, U+014E->U+014F, U+014F, U+0150->U+0151, U+0151, U+0152->U+0153, U+0153, U+0154->U+0155, U+0155, U+0156->U+0157, U+0157, U+0158->U+0159, U+0159, U+015A->U+015B, U+015B, U+015C->U+015D, U+015D, U+015E->U+015F, U+015F, U+0160->U+0161, U+0161, U+0162->U+0163, U+0163, U+0164->U+0165, U+0165, U+0166->U+0167, U+0167, U+0168->U+0169, U+0169, U+016A->U+016B, U+016B, U+016C->U+016D, U+016D, U+016E->U+016F, U+016F, U+0170->U+0171, U+0171, U+0172->U+0173, U+0173, U+0174->U+0175, U+0175, U+0176->U+0177, U+0177, U+0178->U+00FF, U+00FF, U+0179->U+017A, U+017A, U+017B->U+017C, U+017C, U+017D->U+017E, U+017E, U+0410..U+042F->U+0430..U+044F, U+0430..U+044F, U+4E00..U+9FFF'), - array('min_prefix_len', '0'), - array('min_infix_len', '0'), + array('ignore_chars', 'U+0027, U+002C'), + array('min_prefix_len', '3 # Minimum number of characters for wildcard searches by prefix (min 1). Default is 3. If specified, set min_infix_len to 0'), + array('min_infix_len', '0 # Minimum number of characters for wildcard searches by infix (min 2). If specified, set min_prefix_len to 0'), array('html_strip', '1'), + array('index_exact_words', '0 # Set to 1 to enable exact search operator. Requires wordforms or morphology'), + array('blend_chars', 'U+23, U+24, U+25, U+26, U+40'), ), 'index index_phpbb_' . $this->id . '_delta : index_phpbb_' . $this->id . '_main' => array( array('path', $this->config['fulltext_sphinx_data_path'] . 'index_phpbb_' . $this->id . '_delta'), @@ -430,22 +435,26 @@ class fulltext_sphinx */ public function split_keywords(&$keywords, $terms) { + // Keep quotes and new lines + $keywords = str_replace(['"', "\n"], ['"', ' '], trim($keywords)); + if ($terms == 'all') { - $match = array('#\sand\s#i', '#\sor\s#i', '#\snot\s#i', '#\+#', '#-#', '#\|#', '#@#'); - $replace = array(' & ', ' | ', ' - ', ' +', ' -', ' |', ''); + // Replaces verbal operators OR and NOT with special characters | and -, unless appearing within quotation marks + $match = ['#\sor\s(?=([^"]*"[^"]*")*[^"]*$)#i', '#\snot\s(?=([^"]*"[^"]*")*[^"]*$)#i']; + $replace = [' | ', ' -']; $keywords = preg_replace($match, $replace, $keywords); $this->sphinx->SetMatchMode(SPH_MATCH_EXTENDED); } else { + $match = ['\\', '(',')', '|', '!', '@', '~', '/', '^', '$', '=', '&', '<', '>']; + + $keywords = str_replace($match, ' ', $keywords); $this->sphinx->SetMatchMode(SPH_MATCH_ANY); } - // Keep quotes and new lines - $keywords = str_replace(array('"', "\n"), array('"', ' '), trim($keywords)); - if (strlen($keywords) > 0) { $this->search_query = str_replace('"', '"', $keywords); @@ -455,6 +464,62 @@ class fulltext_sphinx return false; } + /** + * Cleans search query passed into Sphinx search engine, as follows: + * 1. Hyphenated words are replaced with keyword search for either the exact phrase with spaces + * or as a single word without spaces eg search for "know-it-all" becomes ("know it all"|"knowitall*") + * 2. Words with apostrophes are contracted eg "it's" becomes "its" + * 3. <, >, " and & are decoded from HTML entities. + * 4. Following special characters used as search operators in Sphinx are preserved when used with correct syntax: + * (a) quorum matching: "the world is a wonderful place"/3 + * Finds 3 of the words within the phrase. Number must be between 1 and 9. + * (b) proximity search: "hello world"~10 + * Finds hello and world within 10 words of each other. Number can be between 1 and 99. + * (c) strict word order: aaa << bbb << ccc + * Finds "aaa" only where it appears before "bbb" and only where "bbb" appears before "ccc". + * (d) exact match operator: if lemmatizer or stemming enabled, + * search will find exact match only and ignore other grammatical forms of the same word stem. + * eg. raining =cats and =dogs + * will not return "raining cat and dog" + * eg. ="search this exact phrase" + * will not return "searched this exact phrase", "searching these exact phrases". + * 5. Special characters /, ~, << and = not complying with the correct syntax + * and other reserved operators are escaped and searched literally. + * Special characters not explicitly listed in charset_table or blend_chars in sphinx.conf + * will not be indexed and keywords containing them will be ignored by Sphinx. + * By default, only $, %, & and @ characters are indexed and searchable. + * String transformation is in backend only and not visible to the end user + * nor reflected in the results page URL or keyword highlighting. + * + * @param string $search_string + * @return string + */ + public function sphinx_clean_search_string($search_string) + { + $from = ['@', '^', '$', '!', '<', '>', '"', '&', '\'']; + $to = ['\@', '\^', '\$', '\!', '<', '>', '"', '&', '']; + + $search_string = str_replace($from, $to, $search_string); + + $search_string = strrev($search_string); + $search_string = preg_replace(['#\/(?!"[^"]+")#', '#~(?!"[^"]+")#'], ['/\\', '~\\'], $search_string); + $search_string = strrev($search_string); + + $match = ['#(/|\\\\/)(?![1-9](\s|$))#', '#(~|\\\\~)(?!\d{1,2}(\s|$))#', '#((?:\p{L}|\p{N})+)-((?:\p{L}|\p{N})+)(?:-((?:\p{L}|\p{N})+))?(?:-((?:\p{L}|\p{N})+))?#i', '#<<\s*$#', '#(\S\K=|=(?=\s)|=$)#']; + $replace = ['\/', '\~', '("$1 $2 $3 $4"|$1$2$3$4*)', '\<\<', '\=']; + + $search_string = preg_replace($match, $replace, $search_string); + $search_string = preg_replace('#\s+"\|#', '"|', $search_string); + + /** + * OPTIONAL: Thousands separator stripped from numbers, eg search for '90,000' is queried as '90000'. + * By default commas are stripped from search index so that '90,000' is indexed as '90000' + */ + // $search_string = preg_replace('#[0-9]{1,3}\K,(?=[0-9]{3})#', '', $search_string); + + return $search_string; + } + /** * Performs a search on keywords depending on display specific params. You have to run split_keywords() first * @@ -646,7 +711,7 @@ class fulltext_sphinx $this->sphinx->SetFilter('deleted', array(0)); $this->sphinx->SetLimits((int) $start, (int) $per_page, max(SPHINX_MAX_MATCHES, (int) $start + $per_page)); - $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->EscapeString(str_replace('"', '"', $this->search_query)), $this->indexes); + $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->sphinx_clean_search_string(str_replace('"', '"', $this->search_query)), $this->indexes); // Could be connection to localhost:9312 failed (errno=111, // msg=Connection refused) during rotate, retry if so @@ -654,7 +719,7 @@ class fulltext_sphinx while (!$result && (strpos($this->sphinx->GetLastError(), "errno=111,") !== false) && $retries--) { usleep(SPHINX_CONNECT_WAIT_TIME); - $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->EscapeString(str_replace('"', '"', $this->search_query)), $this->indexes); + $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->sphinx_clean_search_string(str_replace('"', '"', $this->search_query)), $this->indexes); } if ($this->sphinx->GetLastError()) @@ -677,7 +742,7 @@ class fulltext_sphinx $start = floor(($result_count - 1) / $per_page) * $per_page; $this->sphinx->SetLimits((int) $start, (int) $per_page, max(SPHINX_MAX_MATCHES, (int) $start + $per_page)); - $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->EscapeString(str_replace('"', '"', $this->search_query)), $this->indexes); + $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->sphinx_clean_search_string(str_replace('"', '"', $this->search_query)), $this->indexes); // Could be connection to localhost:9312 failed (errno=111, // msg=Connection refused) during rotate, retry if so @@ -685,7 +750,7 @@ class fulltext_sphinx while (!$result && (strpos($this->sphinx->GetLastError(), "errno=111,") !== false) && $retries--) { usleep(SPHINX_CONNECT_WAIT_TIME); - $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->EscapeString(str_replace('"', '"', $this->search_query)), $this->indexes); + $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->sphinx_clean_search_string(str_replace('"', '"', $this->search_query)), $this->indexes); } }