Gweithredoedd

Prosesu treigladau gyda meddalwedd

Oddi ar Hedyn

Fersiwn a roddwyd ar gadw am 19:58, 5 Hydref 2012 gan Huwwaters (sgwrs | cyfraniadau)

Esboniad

Mae angen cod agored i adnabod treigladau. Byddai gymaint o bosibiliadau!

Dw i eisiau datblygu ategyn WordPress i ychwanegu treigladau cywir i chwilio. Ar hyn o bryd mae angen chwilio am 'Caer', 'Gaer', 'Nghaer' ar wahan. Gyda'r ategyn byddai modd chwilio am un ohnonyn nhw yn unig a derbyn canlyniadau gyda phob fersiwn.

Felly... os ydyn ni'n gallu sgwennu ffug-cod gyda'n gilydd byddai modd sgwennu'r ategyn a rhyddhau'r cod dan GPL.

Er mwyn cael prosiect haws:

  • Efallai gwnawn ni ddechrau gyda'r fersiwn 'geiriadur' o'r gair yn unig - yn yr enghraifft mae pobl yn debygol i chwilio am 'Caer' yn hytrach nag unrhyw fersiwn arall.
  • Anghofia gwrywaidd a benywaidd ar hyn o bryd (byddai angen rhestr o eiriau fel arall)

O'n i'n meddwl bod system gyda http://kevindonnelly.org.uk/ ond dw i'n methu ffeindio fe. Hefyd bydda'r broses datblygu yn hwyl! --Carlmorris (sgwrs) 20:20, 5 Hydref 2012 (BST)


Y treigladau

Llythyren Meddal Trwynol Llais H-bom
p b mh ph
t d nh th
c g ngh ch
b f m
d dd n
g /hwyl fawr g/ ng
m f
ll l
rh r
aeiouwy rhoi h arno!


Y cod

// cynhyrchu llinyn gyda phob fersiwn o'r gair
// e.e. mewnbwn Caer yn cael allbwn 'Caer NEU Gaer NEU Nghaer NEU Chaer'
llinyn cynhyrchu_treigladau(llinyn $gair)
{
  llinyn $chwiliad = $gair;

  os ydy'r llythyren gyntaf o'r $gair ar y tabl? {
    // ydy felly mae'r gair yn gallu treiglo
    cer trwy pob llythyren ar y tabl {
      $chwiliad += 'NEU';
      $chwiliad += cyfnewid_llythyren_gyntaf($gair); // parchu maint y llythyren (C yn newid i G, c yn newid i g)
    }
  $chwiliad = '(' + $chwiliad + ')';
  }
  fel arall {
  // nac ydy felly dyw'r gair ddim yn dreiglo
  // e.e. aderyn, Aberystwyth,
  // byddai $chwiliad == $gair
  }

  dychwelyd $chwiliad;
}


llinyn chwilio(llinyn mewnbwn_chwiliad)
{
  cer trwy pob $gair ym $mewnbwn_chwiliad
  {
    cyfnewid cynhyrchu_treigladau($gair) am $gair
  }
}

Cod MySQL

Fe wnes i geisio ar beth tebyg gan ddefnyddio cod "LIKE" mewn chwiliad MySQL. Nes i erioed ei gwblhau, ond y syniad oedd gennyf oedd cwtogi y 3 llythyren oddi ar flaen gair, gan mai dene fydd y nifer fwyaf o lythrennau posib sy'n gysylltiedig â'r treiglo, wedyn defnyddio "LIKE" i geisio paru gweddill y gair gyda chronfa data wedi ei seilio ar eiriadur rhydd.

Cod dwi eisoes yn ei ddefnyddio ydi hwn, sydd bellach tu ôl i www.efrydydd.com (dwi wedi bod yn gweithio arno'n ddiweddar):

$chwilio = "SELECT id, cymraeg_u, saesneg_u, cenedl_c, cenedl_s FROM termau WHERE dangos='1' AND cymraeg_u LIKE '%$allweddair%' OR saesneg_u LIKE '%$allweddair%'";