Hodiaŭ mi enprofundiĝis en programado de fasado por la serĉprogramo “Hyper Estraier”. Unue mi tralegis la fontprogramon de “kukolo”, helpate de konsultlibroj pri Javaskripto kaj regulaj esprimoj. Mi devis ankaŭ legi la uzulan dokumenton de Hyper Estraier precipe pri esprimoj de serĉaj kondiĉoj.
Troviĝas unu grava diferenco inter Guglo kaj Estraier. Guglo akceptas grupigitajn AŬ-serĉvortojn en frazoserĉo. Sed Estraier ne akceptas. Tial, kiam oni volas serĉi per Estraier sinsekvon de adjektivo kaj substantivo kun fleksio, oni devas doni jenan esprimon:
“bona tago” OR “bonaj tagoj” OR “bonan tagon” OR “bonajn tagojn”
Por efektivigi tian kunfleksion mi skribis ĉi tian funkcion.
[code lang=”javascript”]
function kunfleksiu(t) {
myRE = new RegExp(“^(\S+[uao]) (\S+[ao])$”, “i”);
var paro = t.match(myRE);
if (paro) {
t = ‘”‘ + t + ‘” OR “‘ + RegExp.$1 + ‘j ‘ + RegExp.$2 +’j” OR “‘;
t = t + RegExp.$1 + ‘n ‘ + RegExp.$2 +’n” OR “‘;
t = t + RegExp.$1 + ‘jn ‘ + RegExp.$2 +’jn”‘;
}
return t;
}
[/code]
alia solvo estas kombina fleksio de ĉiu vortoj: el “nigra kato” oni kontruas liston “nigra, nigraj, nigran, nigrajn” kaj kombine kompletigas “nigra kato, nigra katon, nigra katoj…”. tio kreas malĝustajn formojn, sed ili ne aperas en tekstoj, do la serĉilo ne trovos ilin. oni ankaŭ povas ilin forigi per regula esprimo. mi ne memoras la detalojn de ĉi tiu algoritmo, mi provos rekrei ĝin.
ankaŭ mi vane provis “google desktop search” “askjeeves” kaj aliajn kaj ne trovis kontentigan. kaj ankaŭ iu alia: http://groups.google.fr/group/soc.culture.esperanto/browse_thread/thread/212e694619f4b729/rnum=1#0b11ee17cf28bcdc
Saluton, ĵeromo! Dankon pro via komento.
Post du semajnoj de ekuzo de Hyper Estraier, mi opinias, ke ĝi estas bona labortabla serĉilo por esperantaj dokumentoj.
precipe interesus min, se mi povus aranĝi apartan dosieron ekzemple “tekstaro” kaj instrui al la serĉilo, ke nur tiun dosieron kaj ĝiajn subdosierojn ĝi traserĉu. ĉu laux via sperto estraier tion kapablas?
Jes. Ĝuste mi aranĝas la serĉilon funkcii tiamaniere. Kiam oni faras indekson, oni indikas serĉotan dosierujon (inkluzive de subdosierujoj) per komandlinia parametro.