Mageia se distribuye a través de imágenes ISO. Esta página le ayudará a
+elegir qué imagen se adapta mejor a sus necesidades.
Hay tres tipos de medios de instalación:
Instalador clásico: el arranque con este
+medio le proporciona la máxima flexibilidad para elegir qué instalar y para
+configurar su sistema. En particular, tiene la opción de elegir qué entorno
+de escritorio instalar.
Imágenes LIVE: Esta opción le permite
+probar Mageia sin tener que instalarlo o realizar cambios en su equipo. Sin
+embargo, el medio Live también incluye un instalador, que puede arrancar al
+iniciarlo o después de iniciar el sistema operativo Live.
Nota
El instalador Live es más sencillo que el instalador Clásico, pero tiene
+menos opciones de configuración.
Importante
Los ISO en vivo solo se pueden usar para crear instalaciones
+“limpias”, no se pueden usar para actualizar versiones de
+Mageia instaladas previamente.
Instalación por red: estas son ISO mínimas
+que no contienen más de lo necesario para iniciar el instalador DrakX y
+encontrar DrakX-installer-stage2 y otros paquetes
+necesarios para continuar y completar la instalación. Estos paquetes pueden
+estar en el disco duro del PC, en una unidad local, en una red local o en
+Internet.
Estos soportes son muy livianos (menos de 100 MB) y son convenientes si el
+ancho de banda es demasiado bajo para descargar un DVD completo, o si tiene
+una PC sin una unidad de DVD o no puede arrancar desde una memoria USB.
Se dan más detalles en las siguientes secciones.
Medio
Definicion
Aquí, un medio/soporte es un archivo de imagen ISO que le permite instalar
+y/o actualizar Mageia y, por extensión, cualquier medio físico (DVD, memoria
+USB, ...) en el que se copie el archivo ISO.
Estas ISOs usan el instalador clásico llamado DrakX
Se utilizan para realizar instalaciones limpias o para actualizar una
+versión instalada previamente de Mageia
Diferentes medios para arquitecturas de 32 y 64 bit.
Algunas herramientas están disponibles en la “pantalla” de
+bienvenida del instalador: Sistema de rescate, Prueba de
+memoria y Herramienta de detección de
+hardware
Cada DVD contiene muchos entornos de escritorio e idiomas disponibles
Se le dará la opción durante la instalación para agregar software no libre
Medio Live
Caracterśticas comunes.
Puede usarse para obtener una vista previa del sistema operativo Mageia sin
+tener que instalarlo
Los soportes Live también incluyen un instalador.
Cada ISO contiene solo un entorno de escritorio (Plasma, GNOME o Xfce)
Diferentes medios para arquitecturas de 32 y 64 bit.
Contienen software no libre
DVD Live Plasma
Solo entorno de escritorio Plasma
Todos los idiomas disponibles están presentes
Sólo arquitectura 64-bit
Live DVD GNOME
Solo entorno de escritorio GNOME
Todos los idiomas disponibles están presentes
Sólo arquitectura 64-bit
DVD Live Xfce
Solo entorno de escritorio Xfce
Todos los idiomas disponibles están presentes
Arquitecturas de 32 o 64 bit
Medios de instalación por internet
Caracterśticas comunes.
Diferentes medios para arquitecturas de 32 y 64 bit.
Los primeros pasos son solo en inglés
netinstall.iso
Contiene solo software libre, para aquellos que prefieren no usar software
+no libre
netinstall-nonfree.iso
Contiene software No libre (en su mayoría controladores, codecs ...) para
+quienes lo necesitan
Descargando y verificando medios.
Descargando
Una vez que haya elegido su archivo ISO, puede descargarlo usando http o
+BitTorrent. En ambos casos, se le proporciona cierta información, como el
+espejo en uso y una opción alternativa a la que cambiar si el ancho de banda
+es demasiado bajo.
Si se elige http, también verá información sobre las sumas de comprobación.
md5sum, sha1sum y
+sha512sum (las
+ más segura) son herramientas para verificar la integridad de ISO. Copie una
+de las sumas de comprobación (cadena de caracteres alfanuméricos) para usar
+en la siguiente sección.
Mientras tanto, se abrirá una ventana para descargar la ISO real:
Haga click en Guardar archivo, luego haga click en
+Aceptar.
Comprobando la integridad de los medios descargados
Las sumas de comprobación mencionadas anteriormente son huellas digitales
+del archivo que se va a descargar, generadas por un algoritmo. Puede
+comparar la suma de comprobación de su ISO descargada con la de la fuente
+original ISO. Si las sumas de comprobación no coinciden, significa que los
+datos reales en los ISO no coinciden, y si ese es el caso, entonces debe
+volver a intentar la descarga o intentar una reparación utilizando
+BitTorrent.
Para generar la suma de comprobación para su ISO descargada, abra una
+consola, (no necesita ser root), y:
Para usar md5sum, escriba: md5sum
+path/to/the/image/file.iso
Para usar el sha1sum, escriba: sha1sum
+ruta/a/la/imagen/archivo.iso
Para usar el sha512sum, escriba:
+sha512sum ruta/a/la/imagen/archivo.iso
Ejemplo:
luego compare el resultado (es posible que tenga que esperar un rato) con la
+suma de comprobación ISO proporcionada por Mageia.
Grabar o volcar el ISO
La ISO verificada ahora puede grabarse en un CD / DVD o
+“volcarse” en una memoria USB. Esta no es una operación de
+copia estándar, ya que realmente se creará un medio de arranque.
Grabar el ISO en un CD/DVD
Cualquiera que sea el software que utilice, asegúrese de que se utiliza la
+opción de grabar una imagen. Grabar
+datos o archivos NO es
+correcto. Vea 4 el wiki de
+Mageia para más información.
Volvar el ISO en un USB
Todas las ISO de Mageia son híbridas, lo que significa que puede
+descargarlas en una memoria USB y luego usarlas para iniciar e instalar el
+sistema.
Aviso
Al volcar una imagen en un dispositivo flash se destruye cualquier sistema
+de archivos anterior en el dispositivo y se perderán todos los datos
+existentes.
Nota
Además, la única partición en el dispositivo flash será la partición ISO de
+Mageia.
Por lo tanto, si se escribe una ISO de aproximadamente 4 GB en una memoria
+USB de 8 GB, la memoria solo aparecerá como 4 GB. Esto se debe a que los 4
+GB restantes ya no están formateados, por lo tanto, no están actualmente
+disponibles para su uso. Para recuperar la capacidad original, debe volver a
+formatear y repartir la memoria USB.
Usando la línea de comandos dentro de un sistema GNU/Linux
Aviso
Es potencialmente *peligroso* hacerlo a mano. Se corre el riesgo de
+sobreescribir datos existentes potencialmente valiosos si especifica el
+dispositivo de destino equivocado.
Abrir consola
Conviértase en un usuario root (administrador) con el
+comando su - (no olvide el signo -)
Conecte su memoria USB, pero no la monte (esto también significa que no abra
+ninguna aplicación o administrador de archivos que pueda acceder o leerla)
Teclee el comando fdisk -l
Busque el nombre del dispositivo para su memoria USB (por su tamaño). Por
+ejemplo /dev/sdb en la captura de pantalla anterior, es
+un dispositivo USB de 8GB.
Alternativamente, puede encontrar el nombre del dispositivo con el comando
+dmesg. Hacia el final del siguiente ejemplo, puede ver el
+nombre del dispositivo comenzando con sd, y en este
+caso, sdd es el dispositivo real. También puedes ver
+que su tamaño es de 2GB:
[72594.604531] usb 1-1: Nuevo dispositivo USB de alta velocidad número 27 utilizando xhci_hcd
+[72594.770528] usb 1-1: Nuevo dispositivo USB encontrado, idVendedor=8564, idProducto=1000
+[72594.770533] usb 1-1: Nuevas cadenas de dispositivos USB: Mfr=1, Product=2, SerialNumber=3
+[72594.770536] usb 1-1: Producto: Dispositivo de almacenamiento masivo
+[72594.770537] usb 1-1: Fabricante: JetFlash
+[72594.770539] usb 1-1: Número de serie: 18MJTWLMPUCC3SSB
+[72594.770713] usb 1-1: ep 0x81 - Intervalo de redondeo a 128 microframes, ep desc dice 255 microframes
+[72594.770719] usb 1-1: ep 0x2 - Intervalo de redondeo a 128 microframes, ep desc dice 255 microframes
+[72594.771122] almacenamiento-usb 1-1:1.0: Dispositivo de almacenamiento masivo USB detectado
+[72594.772447] scsi host8: almacenamiento-usb 1-1:1.0
+[72595.963238] scsi 8:0:0:0: Acceso-directo JetFlash Transcend 2GB 1100 PQ: 0 ANSI: 4
+[72595.963626] sd 8:0:0:0: [sdd] 4194304 512-byte bloques lógicos: (2.14 GB/2.00 GiB)
+[72595.964104] sd 8:0:0:0: [sdd] La protección contra escritura está desactivada
+[72595.964108] sd 8:0:0:0: [sdd] Mode Sense: 43 00 00 00
+[72595.965025] sd 8:0:0:0: [sdd] No se encontró la página de modo de caché
+[72595.965031] sd 8:0:0:0: [sdd] Asumiendo la memoria caché de la unidad: escriba por medio de
+[72595.967251] sdd: sdd1
+[72595.969446] sd 8:0:0:0: [sdd] Disco extraíble SCSI adjunto
Ingrese el comando: dd if=ruta/a/el/ISO/archivo
+of=/dev/sdX bs=1M
Donde X = el nombre de su dispositivo, por
+ejemplo: /dev/sdd
Es recomendable que todas las instalaciones de Mageia establezcan una
+contraseña de superusuario (administrador), generalmente
+llamada contraseña de root en Linux. A medida que
+teclee una contraseña en el cuadro superior, un escudo cambiará de rojo a
+amarillo a verde dependiendo de la fortaleza de la contraseña. Un escudo
+verde muestra que estás usando una contraseña segura. Debe repetir la misma
+contraseña en el cuadro que se encuentra debajo para verificar que la
+primera entrada no se haya escrito mal.
Nota
Todas las contraseñas distinguen entre mayúsculas y minúsculas. Es mejor
+usar una mezcla de letras (mayúsculas y minúsculas), números y otros
+caracteres en una contraseña.
Introduzca un usuario
Añadir un usuario aquí. Un usuario normal tiene menos privilegios que el
+superusuario (root), pero suficientes para usar Internet,
+aplicaciones de oficina o juegos, y cualquier otra cosa para la que el
+usuario promedio pueda usar una computadora.
Icono
Haga clic en este botón si desea cambiar el icono del usuario.
Nombre Real
Teclee el nombre real del usuario en este cuadro de texto
Nombre de usuario (login)
Escriba el nombre de usuario o deje a DrakX que proponga uno basdo en su
+nombre real. El nombre de usuario distingue mayúsculas
+de minúsculas.
Atención
El usuario añadido aquí debe ser diferente a cualquier otro actualmente en
+uso, para tener su propio su directorio /home. Algunos
+parámetros de usuario se escribirán en el espacio de usuario, e incluso
+pueden sobrescribir datos reales como los de Firefox, Thunderbird o Kmail...
Contraseña
Escriba la contraseña de usuario. Hay un escudo al final del cuadro de texto
+que indica la fortaleza de la contraseña. (Ver también Nota)
Contraseña (de nuevo): Vuelva a escribir la
+contraseña de usuario. DrakX verificará que no la haya escrito mal.
Nota
Cualquier usuario agregado al instalar Mageia, tendrá un directorio de
+inicio home que está protegido contra lectura y escritura (umask = 0027)
Puede agregar cualquier usuario adicional necesario en el paso
+Resumen de la Configuración durante la
+instalación. Elija Administración de usuarios.
Los permisos de acceso se pueden cambiar también tras la instalación.
Se puede arrancar directamente desde un Live DVD o USB. Por lo general, solo
+necesita conectar el dispositivo USB o colocar el DVD en la unidad y
+reiniciar la computadora.
Si la computadora no se inicia automáticamente desde el USB o el DVD, es
+posible que deba reconfigurar el orden de prioridad del disco de arranque en
+la BIOS. Como alternativa, puede intentar acceder al menú del dispositivo de
+inicio para seleccionar un dispositivo desde el cual se iniciará la
+computadora.
Sugerencia
Para acceder al BIOS o al menú de inicio cuando la computadora se está
+iniciando, puede intentar presionar F2,
+Del o Esc para la BIOS, o
+Esc, F8, F10 o
+F11 para el menú de arranque. Sin embargo, estas teclas
+(bastante comunes) son solo una selección de posibles opciones.
Nota
La pantalla que realmente verá por primera vez cuando arranque desde el
+dispositivo Live dependerá de si la placa base de su computadora es del tipo
+Legacy (BIOS) o UEFI.
En modo BIOS/CSM/Legacy
Primera pantalla al arrancar en modo BIOS
Menú
Arrancar Mageia
Esta opción iniciará el sistema Mageia Live desde el DVD / USB conectado
+(espere un sistema muy lento en comparación con un sistema operativo
+instalado).
Una vez teminado el arranque, puede proceder a la instalación.
+ usar controladores de vídeo no libres (más
+lento)
Arranca el sistema Mageia Live usando controladores de video no libres
Instalar Mageia
Esta opción instalará Mageia en un disco duro.
+ usar controladores de vídeo no libres (más
+lento)
Instalar Mageia usando controladores de vídeo no libres
Test de memoria
Comprobar la memoria RAM instalada realizando múltiples operaciones de
+lectura y escritura. Reinicia para terminar la comprobación.
F2 Idioma
Pulse F2 para que el instalador use un idioma específico
+durante la instalación. Use las teclas de flecha para seleccionar el idioma
+y luego presione Enter.
En modo UEFI
Primera pantalla al arrancar en modo UEFI
Menú
Arrancar Mageia
Esta opción iniciará el sistema Mageia Live desde el DVD / USB conectado
+(espere un sistema muy lento en comparación con un sistema operativo
+instalado). Una vez hecho el arranque, puede proceder a la instalación.
Instalar Mageia
Esta opción instalará Mageia en un disco duro.
F2 Idioma
Pulse F2 para que el instalador use un idioma específico
+durante la instalación. Use las teclas de flecha para seleccionar el idioma
+y luego presione Enter.
Nota
Si arranca desde una memoria USB, verá duplicadas las opciones de menú
+anteriores, y en este caso, debe elegir del par de menús que aparecerá con
+el sufijo "USB".
En esta pantalla puede ver el contenido de su(s) disco(s) duro(s) junto con
+las propuestas de partición de DrakX sobre dónde instalar Mageia.
Las opciones reales disponibles de entre las que se muestran a continuación
+variarán de acuerdo con el diseño y el contenido de su(s) disco(s) duro(s)
+particulares.
Opciones principales
Usar particiones existentes
Si esta opción está disponible significa que se han encontrado particiones
+compatibles con Linux que pueden ser usadas para la instalación.
Usar espacio libre
Si tiene espacio sin usar en su disco duro, esta opción lo usará para su
+nueva instalación de Mageia.
Use el espacio libre en una partición de
+Windows
Si tiene espacio no utilizado en una partición de Windows existente, el
+instalador puede ofrecerle usarlo. Esta puede ser una forma útil de hacer
+espacio para su nueva instalación de Mageia, pero es una operación
+arriesgada, por lo que debe asegurarse de haber hecho una copia de seguridad
+de todos los archivos importantes.
Con esta opción, el instalador muestra la partición restante de Windows en
+azul claro y la partición propuesta de Mageia en azul oscuro con sus tamaños
+previstos justo debajo. Tiene la opción de modificar estos tamaños haciendo
+clic y arrastrando el espacio entre ambas particiones. Vea la siguiente
+captura de pantalla:
Borrar y usar el disco entero
Esta opción asignará todo el disco para Mageia.
Aviso
Esto borrará TODOS los datos en el disco duro seleccionado. ¡Tenga cuidado!
+Si pretende usar parte del disco para otra cosa, o ya tiene datos en la
+unidad que no puede perder, no use esta opción.
Importante
Sea consciente de que esta operación implica una reducción del tamaño de la
+partición de Windows. Esta partición debe de estar "limpia", es decir,
+Windows debe de haberse cerrado correctamente la última vez que fue
+usado. También debe de haber sido desfragmentada, aunque esto no garantiza
+que todos los archivos de la partición hayan sido movidos fuera del área que
+se va a usar. Por ello, es altamente recomendable hacer una copia de
+seguridad de sus archivos personales.
Partición de disco personalizada
Esta opción le ofrece el control completo sobre donde colocar su instalación
+en su(s) disco(s) duro(s).
Si no está utilizando la opción Partición de disco
+personalizada, entonces el instalador asignará el espacio
+disponible de acuerdo con las siguientes reglas:
Si el espacio total disponible es inferior a 50 GB, solo se crea una
+partición. Esta será la partición root/.
Si el espacio total disponible es superior a 50 GB, se crean tres
+particiones
6/19 del total del espacio disponible se asigna a / con
+un máximo de 50 GB
1/19 se asigna a swap con un máximo de 4 GB
el resto (al menos 12/19) se asigna a /home
Esto significa que a partir de 160 GB de espacio disponible, el instalador
+creará tres particiones:
50 GB para /
4 GB para swap
y el resto para /home
Nota
Si está utilizando un sistema UEFI, la ESP (partición del sistema EFI) se
+detectará automáticamente, o se creará si aún no existe, y se montará
+en/boot/EFI. La opción Partición de disco
+personalizado es la única que permite comprobar que se ha
+realizado correctamente.
Si está utilizando un sistema Legacy (también conocido como BIOS) con un
+disco particionado GPT, debe crear una partición de inicio BIOS si aún no
+existe. Debe ser de aproximadamente 1 MiB sin punto de montaje. Se puede
+crear con el instalador, en Partición de disco
+personalizado,como cualquier otra partición. Asegúrese de
+seleccionar “Partición de arranque BIOS” para el tipo de
+sistema de archivos.
Vea DiskDrake para obtener información sobre cómo
+proceder.
Importante
Algunas unidades muy nuevas están utilizando sectores lógicos de 4096 bytes,
+en lugar del estándar anterior de 512. Debido a la falta de hardware
+disponible, la herramienta de partición utilizada en el instalador no se ha
+probado con dicha unidad.
Algunos dispositivos SSD ahora usan un tamaño de bloque de borrado de más de
+1 MB. Si tiene un dispositivo de este tipo, le sugerimos que realice una
+partición de la unidad por adelantado, utilizando una herramienta de
+partición alternativa como gparted, y use la siguiente configuración:
Aliner a = MiB
Espacio libre precedente (MiB) = 2
También asegúrese de que todas las particiones se creen utilizando una
+cantidad par de megabytes.
Elija los puntos de montaje
Aquí puede ver las particiones de Linux que se han encontrado en tu
+computadora. Si no está de acuerdo con las sugerencias de DrakX, puede
+cambiar los puntos de montaje usted mismo.
A la izquierda de los menús desplegables hay una lista de las particiones
+disponibles. Por ejemplo: sda es un disco duro - y
+5 es un número de partición,
+seguido de la capacidad, punto de montaje y tipo de sistema de
+ficheros de la partición.
Si tiene varias particiones, puede elegir varios puntos de
+montaje de la lista desplegable, como /,
+/home y /var. Incluso puede hacer
+sus propios puntos de montaje, por ejemplo /video para
+una partición donde desea almacenar sus películas, o tal vez
+/Datos para todos sus ficheros de datos.
Para cualquier partición que no necesite utilizar, puede dejar en blanco el
+campo de punto de montaje.
Aviso
Si realiza algún cambio aquí, asegúrese de que todavía tiene un partición
+raíz /.
Sugerencia
Si no está seguro de qué elegir, haga clic en Previo
+para regresar y entoces escoja Particionado de disco
+personalizado, donde puede hacer clic en una partición para ver
+su tipo y tamaño.
Si está seguro de que los puntos de montaje son correctos, haga clic en
+Siguiente, y elija si solo desea formatear la partición
+sugerida por DrakX, o más.
Confirme el disco que va a formatear
Haga clic en Anterior si no está seguro de su elección.
Haga clic en Siguiente para continuar si está seguro de
+que está bien borrar todas las particiones,
+todos los sistemas operativos y todos los datos que puedan existir en ese disco duro.
Partición de disco personalizada con DiskDrake
Modifique la estructura de su(s) disco(s) aquí. Puede eliminar o crear
+particiones, cambiar el sistema de archivos o el tamaño de una partición, e
+incluso ver sus detalles antes de comenzar.
Hay una pestaña en la parte superior de cada disco duro detectado (u otro
+dispositivo de almacenamiento, como un pendrive USB). En la captura de
+pantalla de arriba hay dos dispositivos disponibles: sda
+y sdb.
Para todas las demás acciones: haga clic en la partición deseada
+primero. Luego véala, o elija un sistema de archivos y un punto de montaje,
+modifíquelo o límpielo. El Modo experto proporciona más
+opciones, como etiquetar (nombrar) una partición, o elegir un tipo de
+partición.
Continúe hasta que haya ajustado todo a su gusto, luego haga clic en
+Hecho cuando esté preparado.
Aviso
Tenga cuidado con la opción Borrar todo. Utilícelo solo
+si está seguro de que desea borrar todas las particiones en el dispositivo
+de almacenamiento seleccionado.
Si desea utilizar cifrado en su partición / debe
+asegurarse de que tiene una partición /boot aparte. La
+opción de cifrado para la partición /boot NO debe
+configurarse, o de lo contrario su sistema no podrá arrancar.
Importante
Si está instalando Mageia en un sistema UEFI, verifique que haya una ESP
+(partición del sistema EFI) presente y correctamente montada en
+/boot/EFI. Vea la Figura 1 a continuación.
Si está instalando Mageia en un sistema Legacy / GPT, verifique que haya una
+partición de arranque BIOS presente y del tipo correcto. Vea la Figura 2 a
+continuación.
Figura 1. Partición de Sistema EFI
Figura 2. Partición de arranque BIOS
Formateo
Aquí puede elegir qué partición(es) desea(n) formatear. Cualquier dato en
+particiones no marcado para formatear será preservado.
Por lo general, al menos las particiones que DrakX seleccionó necesitan ser
+formateadas.
Haga click en Avanzado para escoger las particiones en
+las que desea comprobar los llamados bloques malos
Sugerencia
Si no está seguro de haber tomado la decisión correcta, puede hacer clic en
+Previo, de nuevo en Previo y
+entonces en Persoalizado para volver a la pantalla
+principal, donde puede elegir ver los detalles de sus particiones.
Cuando esté seguro de sus elecciones, haga clic en
+Siguiente para continuar.
Nadie verá las imágenes que puede ver en este manual. Las imágenes que verá
+dependerán de su hardware y las decisiones que tomó durante la instalación.
Finalmente, llegará a la pantalla de inicio de sesión del escritorio.
Escriba su nombre de usuario y contraseña, y en pocos segundos se encontrará
+con un escritorio KDE Plasma o GNOME cargado, dependiendo de la imagen que
+usara. Ahora puede comenzar a usar y disfrutar de su instalación de Mageia.
Puede encontrar más documentación en Mageia
+wiki.
Una vez que se haya instalado el cargador de arranque, se le pedirá que
+detenga el equipo, extraiga el DVD / memoria USB en vivo y reinicie el
+equipo.
Importante
Asegúrese de seguir estos pasos de instrucciones de apagado y reinicio en el
+mismo orden.
Cuando esté listo, presione Finalizar.
Cuando reinicie, verá una sucesión de barras de progreso de descarga. Estos
+indican que las listas de repositorios de software se están descargando
+(consulte Gestión de software).
" + "Your search returned no results for " + "" + txt_wordsnotfound + "" + "
";
+ }
+ //alert(results);
+ document.getElementById('searchResults').innerHTML = results;
+}
+
+function tokenize(wordsList){
+ var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces
+ var cleanwordsList = new Array(); // Array with the words to look for
+ for(var j in wordsList){
+ var word = wordsList[j];
+ if(typeof stemmer != "undefined" ){
+ stemQueryMap[stemmer(word)] = word;
+ } else {
+ stemQueryMap[word] = word;
+ }
+ }
+ //stemmedWordsList is the stemmed list of words separated by spaces.
+ for (var t in wordsList) {
+ wordsList[t] = wordsList[t].replace(/(%22)|^-/g, "");
+ if (wordsList[t] != "%20") {
+ scriptLetterTab.add(wordsList[t].charAt(0));
+ cleanwordsList.push(wordsList[t]);
+ }
+ }
+
+ if(typeof stemmer != "undefined" ){
+ //Do the stemming using Porter's stemming algorithm
+ for (var i = 0; i < cleanwordsList.length; i++) {
+ var stemWord = stemmer(cleanwordsList[i]);
+ stemmedWordsList.push(stemWord);
+ }
+ } else {
+ stemmedWordsList = cleanwordsList;
+ }
+ return stemmedWordsList;
+}
+
+//Invoker of CJKTokenizer class methods.
+function cjkTokenize(wordsList){
+ var allTokens= new Array();
+ var notCJKTokens= new Array();
+ var j=0;
+ for(j=0;j";
+ return this.input.substring(this.offset,this.offset+2);
+ }
+
+ function getAllTokens(){
+ while(this.incrementToken()){
+ var tmp = this.tokenize();
+ this.tokens.push(tmp);
+ }
+ return this.unique(this.tokens);
+// document.getElementById("content").innerHTML += tokens+" ";
+// document.getElementById("content").innerHTML += " dada"+sortedTokens+" ";
+// console.log(tokens.length+"dsdsds");
+ /*for(i=0;idada"+un[i]+"- "+stems[i]+" "+ ss;
+ document.getElementById("content").innerHTML += " "+sortedTokens[i];
+ }*/
+ }
+
+ function unique(a)
+ {
+ var r = new Array();
+ o:for(var i = 0, n = a.length; i < n; i++)
+ {
+ for(var x = 0, y = r.length; x < y; x++)
+ {
+ if(r[x]==a[i]) continue o;
+ }
+ r[r.length] = a[i];
+ }
+ return r;
+ }
+}
+
+
+/* Scriptfirstchar: to gather the first letter of index js files to upload */
+function Scriptfirstchar() {
+ this.strLetters = "";
+ this.add = addLettre;
+}
+
+function addLettre(caract) {
+
+ if (this.strLetters == 'undefined') {
+ this.strLetters = caract;
+ } else if (this.strLetters.indexOf(caract) < 0) {
+ this.strLetters += caract;
+ }
+
+ return 0;
+}
+/* end of scriptfirstchar */
+
+/*main loader function*/
+/*tab contains the first letters of each word looked for*/
+function loadTheIndexScripts(tab) {
+
+ //alert (tab.strLetters);
+ var scriptsarray = new Array();
+
+ for (var i = 0; i < tab.strLetters.length; i++) {
+
+ scriptsarray[i] = "..\/search" + "\/" + tab.strLetters.charAt(i) + ".js";
+ }
+ // add the list of html files
+ i++;
+ scriptsarray[i] = "..\/search" + "\/" + htmlfileList;
+
+ //debug
+ for (var t in scriptsarray) {
+ //alert (scriptsarray[t]);
+ }
+
+ tab = new ScriptLoader();
+ for (t in scriptsarray) {
+ tab.add(scriptsarray[t]);
+ }
+ tab.load();
+ //alert ("scripts loaded");
+ return (scriptsarray);
+}
+
+/* ScriptLoader: to load the scripts and wait that it's finished */
+function ScriptLoader() {
+ this.cpt = 0;
+ this.scriptTab = new Array();
+ this.add = addAScriptInTheList;
+ this.load = loadTheScripts;
+ this.onScriptLoaded = onScriptLoadedFunc;
+}
+
+function addAScriptInTheList(scriptPath) {
+ this.scriptTab.push(scriptPath);
+}
+
+function loadTheScripts() {
+ var script;
+ var head;
+
+ head = document.getElementsByTagName('head').item(0);
+
+ //script = document.createElement('script');
+
+ for (var el in this.scriptTab) {
+ //alert (el+this.scriptTab[el]);
+ script = document.createElement('script');
+ script.src = this.scriptTab[el];
+ script.type = 'text/javascript';
+ script.defer = false;
+
+ head.appendChild(script);
+ }
+
+}
+
+function onScriptLoadedFunc(e) {
+ e = e || window.event;
+ var target = e.target || e.srcElement;
+ var isComplete = true;
+ if (typeof target.readyState != undefined) {
+
+ isComplete = (target.readyState == "complete" || target.readyState == "loaded");
+ }
+ if (isComplete) {
+ ScriptLoader.cpt++;
+ if (ScriptLoader.cpt == ScriptLoader.scripts.length) {
+ ScriptLoader.onLoadComplete();
+ }
+ }
+}
+
+/*
+function onLoadComplete() {
+ alert("loaded !!");
+} */
+
+/* End of scriptloader functions */
+
+// Array.unique( strict ) - Remove duplicate values
+function unique(tab) {
+ var a = new Array();
+ var i;
+ var l = tab.length;
+
+ if (tab[0] != undefined) {
+ a[0] = tab[0];
+ }
+ else {
+ return -1
+ }
+
+ for (i = 1; i < l; i++) {
+ if (indexof(a, tab[i], 0) < 0) {
+ a.push(tab[i]);
+ }
+ }
+ return a;
+}
+function indexof(tab, element, begin) {
+ for (var i = begin; i < tab.length; i++) {
+ if (tab[i] == element) {
+ return i;
+ }
+ }
+ return -1;
+
+}
+/* end of Array functions */
+
+
+/*
+ Param: mots= list of words to look for.
+ This function creates an hashtable:
+ - The key is the index of a html file which contains a word to look for.
+ - The value is the list of all words contained in the html file.
+
+ Return value: the hashtable fileAndWordList
+ */
+function SortResults(mots) {
+
+ var fileAndWordList = new Object();
+ if (mots.length == 0) {
+ return null;
+ }
+
+ for (var t in mots) {
+ // get the list of the indices of the files.
+ var listNumerosDesFicStr = w[mots[t].toString()];
+ //alert ("listNumerosDesFicStr "+listNumerosDesFicStr);
+ var tab = listNumerosDesFicStr.split(",");
+
+ //for each file (file's index):
+ for (var t2 in tab) {
+ var temp = tab[t2].toString();
+ if (fileAndWordList[temp] == undefined) {
+
+ fileAndWordList[temp] = "" + mots[t];
+ } else {
+
+ fileAndWordList[temp] += "," + mots[t];
+ }
+ }
+ }
+
+ var fileAndWordListValuesOnly = new Array();
+
+ // sort results according to values
+ var temptab = new Array();
+ for (t in fileAndWordList) {
+ tab = fileAndWordList[t].split(',');
+
+ var tempDisplay = new Array();
+ for (var x in tab) {
+ if(stemQueryMap[tab[x]] != undefined){
+ tempDisplay.push(stemQueryMap[tab[x]]); //get the original word from the stem word.
+ } else {
+ tempDisplay.push(tab[x]); //no stem is available. (probably a CJK language)
+ }
+ }
+ var tempDispString = tempDisplay.join(", ");
+
+ temptab.push(new resultPerFile(t, fileAndWordList[t], tab.length, tempDispString));
+ fileAndWordListValuesOnly.push(fileAndWordList[t]);
+ }
+
+
+ //alert("t"+fileAndWordListValuesOnly.toString());
+
+ fileAndWordListValuesOnly = unique(fileAndWordListValuesOnly);
+ fileAndWordListValuesOnly = fileAndWordListValuesOnly.sort(compare_nbMots);
+ //alert("t: "+fileAndWordListValuesOnly.join(';'));
+
+ var listToOutput = new Array();
+
+ for (var j in fileAndWordListValuesOnly) {
+ for (t in temptab) {
+ if (temptab[t].motsliste == fileAndWordListValuesOnly[j]) {
+ if (listToOutput[j] == undefined) {
+ listToOutput[j] = new Array(temptab[t]);
+ } else {
+ listToOutput[j].push(temptab[t]);
+ }
+ }
+ }
+ }
+ return listToOutput;
+}
+
+function resultPerFile(filenb, motsliste, motsnb, motslisteDisplay) {
+ this.filenb = filenb;
+ this.motsliste = motsliste;
+ this.motsnb = motsnb;
+ this.motslisteDisplay= motslisteDisplay;
+}
+
+function compare_nbMots(s1, s2) {
+ var t1 = s1.split(',');
+ var t2 = s2.split(',');
+ //alert ("s1:"+t1.length + " " +t2.length)
+ if (t1.length == t2.length) {
+ return 0;
+ } else if (t1.length > t2.length) {
+ return 1;
+ } else {
+ return -1;
+ }
+ //return t1.length - t2.length);
+}
\ No newline at end of file
diff --git a/draklive/7/es/content/search/punctuation.props b/draklive/7/es/content/search/punctuation.props
new file mode 100644
index 00000000..d3e3fcd2
--- /dev/null
+++ b/draklive/7/es/content/search/punctuation.props
@@ -0,0 +1,31 @@
+Punct01=\\u3002
+Punct02=\\u3003
+Punct03=\\u300C
+Punct04=\\u300D
+Punct05=\\u300E
+Punct06=\\u300F
+Punct07=\\u301D
+Punct08=\\u301E
+Punct09=\\u301F
+Punct10=\\u309B
+Punct11=\\u2018
+Punct12=\\u2019
+Punct13=\\u201A
+Punct14=\\u201C
+Punct15=\\u201D
+Punct16=\\u201E
+Punct17=\\u2032
+Punct18=\\u2033
+Punct19=\\u2035
+Punct20=\\u2039
+Punct21=\\u203A
+Punct22=\\u201E
+Punct23=\\u00BB
+Punct24=\\u00AB
+Punct25=
+Punct26=
+Punct27=\\u00A0
+Punct28=\\u2014
+
+
+
diff --git a/draklive/7/es/content/search/stemmers/de_stemmer.js b/draklive/7/es/content/search/stemmers/de_stemmer.js
new file mode 100644
index 00000000..7ff3822a
--- /dev/null
+++ b/draklive/7/es/content/search/stemmers/de_stemmer.js
@@ -0,0 +1,247 @@
+/*
+ * Author: Joder Illi
+ *
+ * Copyright (c) 2010, FormBlitz AG
+ * All rights reserved.
+ * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html
+ * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php
+ *
+ * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license.
+ *
+ */
+
+//var stemmer = function Stemmer() {
+ /*
+ German includes the following accented forms,
+ ä ö ü
+ and a special letter, ß, equivalent to double s.
+ The following letters are vowels:
+ a e i o u y ä ö ü
+ */
+
+ var stemmer = function(word) {
+ /*
+ Put u and y between vowels into upper case
+ */
+ word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2');
+ word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2');
+
+ /*
+ and then do the following mappings,
+ (a) replace ß with ss,
+ (a) replace ae with ä, Not doing these, have trouble with diphtongs
+ (a) replace oe with ö, Not doing these, have trouble with diphtongs
+ (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs
+ So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found.
+ */
+ word = word.replace(/ß/g, 'ss');
+ //word = word.replace(/ae/g, 'ä');
+ //word = word.replace(/oe/g, 'ö');
+ //word = word.replace(/([^q])ue/g, '$1ü');
+
+ /*
+ R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters.
+ R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel.
+ R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel.
+ */
+
+ var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/);
+ var r1 = '';
+ if (r1Index != -1) {
+ r1Index += 2;
+ r1 = word.substring(r1Index);
+ }
+
+ var r2Index = -1;
+ var r2 = '';
+
+ if (r1Index != -1) {
+ var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/);
+ if (r2Index != -1) {
+ r2Index += 2;
+ r2 = r1.substring(r2Index);
+ r2Index += r1Index;
+ } else {
+ r2 = '';
+ }
+ }
+
+ if (r1Index != -1 && r1Index < 3) {
+ r1Index = 3;
+ r1 = word.substring(r1Index);
+ }
+
+ /*
+ Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t.
+ Define a valid st-ending as the same list, excluding letter r.
+ */
+
+ /*
+ Do each of steps 1, 2 and 3.
+ */
+
+ /*
+ Step 1:
+ Search for the longest among the following suffixes,
+ (a) em ern er
+ (b) e en es
+ (c) s (preceded by a valid s-ending)
+ */
+ var a1Index = word.search(/(em|ern|er)$/g);
+ var b1Index = word.search(/(e|en|es)$/g);
+ var c1Index = word.search(/([bdfghklmnrt]s)$/g);
+ if (c1Index != -1) {
+ c1Index++;
+ }
+ var index1 = 10000;
+ var optionUsed1 = '';
+ if (a1Index != -1 && a1Index < index1) {
+ optionUsed1 = 'a';
+ index1 = a1Index;
+ }
+ if (b1Index != -1 && b1Index < index1) {
+ optionUsed1 = 'b';
+ index1 = b1Index;
+ }
+ if (c1Index != -1 && c1Index < index1) {
+ optionUsed1 = 'c';
+ index1 = c1Index;
+ }
+
+ /*
+ and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s.
+ (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis)
+ */
+
+ if (index1 != 10000 && r1Index != -1) {
+ if (index1 >= r1Index) {
+ word = word.substring(0, index1);
+ if (optionUsed1 == 'b') {
+ if (word.search(/niss$/) != -1) {
+ word = word.substring(0, word.length -1);
+ }
+ }
+ }
+ }
+ /*
+ Step 2:
+ Search for the longest among the following suffixes,
+ (a) en er est
+ (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters)
+ */
+
+ var a2Index = word.search(/(en|er|est)$/g);
+ var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g);
+ if (b2Index != -1) {
+ b2Index += 4;
+ }
+
+ var index2 = 10000;
+ var optionUsed2 = '';
+ if (a2Index != -1 && a2Index < index2) {
+ optionUsed2 = 'a';
+ index2 = a2Index;
+ }
+ if (b2Index != -1 && b2Index < index2) {
+ optionUsed2 = 'b';
+ index2 = b2Index;
+ }
+
+ /*
+ and delete if in R1.
+ (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters)
+ */
+
+ if (index2 != 10000 && r1Index != -1) {
+ if (index2 >= r1Index) {
+ word = word.substring(0, index2);
+ }
+ }
+
+ /*
+ Step 3: d-suffixes (*)
+ Search for the longest among the following suffixes, and perform the action indicated.
+ end ung
+ delete if in R2
+ if preceded by ig, delete if in R2 and not preceded by e
+ ig ik isch
+ delete if in R2 and not preceded by e
+ lich heit
+ delete if in R2
+ if preceded by er or en, delete if in R1
+ keit
+ delete if in R2
+ if preceded by lich or ig, delete if in R2
+ */
+
+ var a3Index = word.search(/(end|ung)$/g);
+ var b3Index = word.search(/[^e](ig|ik|isch)$/g);
+ var c3Index = word.search(/(lich|heit)$/g);
+ var d3Index = word.search(/(keit)$/g);
+ if (b3Index != -1) {
+ b3Index ++;
+ }
+
+ var index3 = 10000;
+ var optionUsed3 = '';
+ if (a3Index != -1 && a3Index < index3) {
+ optionUsed3 = 'a';
+ index3 = a3Index;
+ }
+ if (b3Index != -1 && b3Index < index3) {
+ optionUsed3 = 'b';
+ index3 = b3Index;
+ }
+ if (c3Index != -1 && c3Index < index3) {
+ optionUsed3 = 'c';
+ index3 = c3Index;
+ }
+ if (d3Index != -1 && d3Index < index3) {
+ optionUsed3 = 'd';
+ index3 = d3Index;
+ }
+
+ if (index3 != 10000 && r2Index != -1) {
+ if (index3 >= r2Index) {
+ word = word.substring(0, index3);
+ var optionIndex = -1;
+ var optionSubsrt = '';
+ if (optionUsed3 == 'a') {
+ optionIndex = word.search(/[^e](ig)$/);
+ if (optionIndex != -1) {
+ optionIndex++;
+ if (optionIndex >= r2Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ } else if (optionUsed3 == 'c') {
+ optionIndex = word.search(/(er|en)$/);
+ if (optionIndex != -1) {
+ if (optionIndex >= r1Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ } else if (optionUsed3 == 'd') {
+ optionIndex = word.search(/(lich|ig)$/);
+ if (optionIndex != -1) {
+ if (optionIndex >= r2Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ Finally,
+ turn U and Y back into lower case, and remove the umlaut accent from a, o and u.
+ */
+ word = word.replace(/U/g, 'u');
+ word = word.replace(/Y/g, 'y');
+ word = word.replace(/ä/g, 'a');
+ word = word.replace(/ö/g, 'o');
+ word = word.replace(/ü/g, 'u');
+
+ return word;
+ };
+//}
\ No newline at end of file
diff --git a/draklive/7/es/content/search/stemmers/en_stemmer.js b/draklive/7/es/content/search/stemmers/en_stemmer.js
new file mode 100644
index 00000000..f58012f2
--- /dev/null
+++ b/draklive/7/es/content/search/stemmers/en_stemmer.js
@@ -0,0 +1,187 @@
+// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original
+// paper, in
+//
+// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14,
+// no. 3, pp 130-137,
+//
+// see also http://www.tartarus.org/~martin/PorterStemmer
+
+// Release 1 be 'andargor', Jul 2004
+// Release 2 (substantially revised) by Christopher McKenzie, Aug 2009
+
+
+var stemmer = (function(){
+ var step2list = {
+ "ational" : "ate",
+ "tional" : "tion",
+ "enci" : "ence",
+ "anci" : "ance",
+ "izer" : "ize",
+ "bli" : "ble",
+ "alli" : "al",
+ "entli" : "ent",
+ "eli" : "e",
+ "ousli" : "ous",
+ "ization" : "ize",
+ "ation" : "ate",
+ "ator" : "ate",
+ "alism" : "al",
+ "iveness" : "ive",
+ "fulness" : "ful",
+ "ousness" : "ous",
+ "aliti" : "al",
+ "iviti" : "ive",
+ "biliti" : "ble",
+ "logi" : "log"
+ },
+
+ step3list = {
+ "icate" : "ic",
+ "ative" : "",
+ "alize" : "al",
+ "iciti" : "ic",
+ "ical" : "ic",
+ "ful" : "",
+ "ness" : ""
+ },
+
+ c = "[^aeiou]", // consonant
+ v = "[aeiouy]", // vowel
+ C = c + "[^aeiouy]*", // consonant sequence
+ V = v + "[aeiou]*", // vowel sequence
+
+ mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0
+ meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1
+ mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
+ s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ return function (w) {
+ var stem,
+ suffix,
+ firstch,
+ re,
+ re2,
+ re3,
+ re4,
+ origword = w;
+
+ if (w.length < 3) { return w; }
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w)) { w = w.replace(re,"$1$2"); }
+ else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w)) { w = w + "e"; }
+ else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); }
+ else if (re4.test(w)) { w = w + "e"; }
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem)) { w = stem + "i"; }
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem)) {
+ w = stem;
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+
+ return w;
+ }
+})();
\ No newline at end of file
diff --git a/draklive/7/es/content/search/stemmers/fr_stemmer.js b/draklive/7/es/content/search/stemmers/fr_stemmer.js
new file mode 100644
index 00000000..34f97431
--- /dev/null
+++ b/draklive/7/es/content/search/stemmers/fr_stemmer.js
@@ -0,0 +1,299 @@
+/*
+ * Author: Kasun Gajasinghe
+ * E-Mail: kasunbg AT gmail DOT com
+ * Date: 09.08.2010
+ *
+ * usage: stemmer(word);
+ * ex: var stem = stemmer(foobar);
+ * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var stemmer = function(word){
+// Letters in French include the following accented forms,
+// â à ç ë é ê è ï î ô û ù
+// The following letters are vowels:
+// a e i o u y â à ë é ê è ï î ô û ù
+
+ word = word.toLowerCase();
+ var oriWord = word;
+ word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel
+ word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2');
+ word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2');
+ word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y');
+ word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1');
+
+ var rv='';
+ var rvIndex = -1;
+ if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){
+ rv = word.substring(3);
+ rvIndex = 3;
+ } else {
+ rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/);
+ if(rvIndex != -1){
+ rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex
+ rv = word.substring(rvIndex);
+ } else {
+ rvIndex = word.length;
+ }
+ }
+
+// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel.
+// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel
+ var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/);
+ var r1 = '';
+ if (r1Index != -1) {
+ r1Index += 2;
+ r1 = word.substring(r1Index);
+ } else {
+ r1Index = word.length;
+ }
+
+ var r2Index = -1;
+ var r2 = '';
+ if (r1Index != -1) {
+ r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/);
+ if (r2Index != -1) {
+ r2Index += 2;
+ r2 = r1.substring(r2Index);
+ r2Index += r1Index;
+ } else {
+ r2 = '';
+ r2Index = word.length;
+ }
+ }
+ if (r1Index != -1 && r1Index < 3) {
+ r1Index = 3;
+ r1 = word.substring(r1Index);
+ }
+
+ /*
+ Step 1: Standard suffix removal
+ */
+ var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/);
+ var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/);
+ var a3Index = word.search(/(logie|logies)$/);
+ var a4Index = word.search(/(usion|ution|usions|utions)$/);
+ var a5Index = word.search(/(ence|ences)$/);
+ var a6Index = word.search(/(ement|ements)$/);
+ var a7Index = word.search(/(ité|ités)$/);
+ var a8Index = word.search(/(if|ive|ifs|ives)$/);
+ var a9Index = word.search(/(eaux)$/);
+ var a10Index = word.search(/(aux)$/);
+ var a11Index = word.search(/(euse|euses)$/);
+ var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/);
+ var a13Index = word.search(/(amment)$/);
+ var a14Index = word.search(/(emment)$/);
+ var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/);
+
+ if(a1Index != -1 && a1Index >= r2Index){
+ word = word.substring(0,a1Index);
+ } else if(a2Index != -1 && a2Index >= r2Index){
+ word = word.substring(0,a2Index);
+ var a2Index2 = word.search(/(ic)$/);
+ if(a2Index2 != -1 && a2Index2 >= r2Index){
+ word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2,
+ } else { //else replace by iqU
+ word = word.replace(/(ic)$/,'iqU');
+ }
+ } else if(a3Index != -1 && a3Index >= r2Index){
+ word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2
+ } else if(a4Index != -1 && a4Index >= r2Index){
+ word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2
+ } else if(a5Index != -1 && a5Index >= r2Index){
+ word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2
+ } else if(a6Index != -1 && a6Index >= rvIndex){
+ word = word.substring(0,a6Index);
+ if(word.search(/(iv)$/) >= r2Index){
+ word = word.replace(/(iv)$/, '');
+ if(word.search(/(at)$/) >= r2Index){
+ word = word.replace(/(at)$/, '');
+ }
+ } else if(word.search(/(eus)$/) != -1){
+ var a6Index2 = word.search(/(eus)$/);
+ if(a6Index2 >=r2Index){
+ word = word.substring(0, a6Index2);
+ } else if(a6Index2 >= r1Index){
+ word = word.substring(0,a6Index2)+"eux";
+ }
+ } else if(word.search(/(abl|iqU)$/) >= r2Index){
+ word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2,
+ } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){
+ word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2,
+ }
+ } else if(a7Index != -1 && a7Index >= r2Index){
+ word = word.substring(0,a7Index); //delete if in R2
+ if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise,
+ var a7Index2 = word.search(/(abil)$/);
+ if(a7Index2 >=r2Index){
+ word = word.substring(0, a7Index2);
+ } else {
+ word = word.substring(0,a7Index2)+"abl";
+ }
+ } else if(word.search(/(ic)$/) != -1){
+ var a7Index3 = word.search(/(ic)$/);
+ if(a7Index3 != -1 && a7Index3 >= r2Index){
+ word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2,
+ } else { //else replace by iqU
+ word = word.replace(/(ic)$/,'iqU');
+ }
+ } else if(word.search(/(iv)$/) != r2Index){
+ word = word.replace(/(iv)$/,'');
+ }
+ } else if(a8Index != -1 && a8Index >= r2Index){
+ word = word.substring(0,a8Index);
+ if(word.search(/(at)$/) >= r2Index){
+ word = word.replace(/(at)$/, '');
+ if(word.search(/(ic)$/) >= r2Index){
+ word = word.replace(/(ic)$/, '');
+ } else { word = word.replace(/(ic)$/, 'iqU'); }
+ }
+ } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau')
+ } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al')
+ } else if(a11Index != -1 ){
+ var a11Index2 = word.search(/(euse|euses)$/);
+ if(a11Index2 >=r2Index){
+ word = word.substring(0, a11Index2);
+ } else if(a11Index2 >= r1Index){
+ word = word.substring(0, a11Index2)+"eux";
+ }
+ } else if(a12Index!=-1 && a12Index>=r1Index){
+ word = word.substring(0,a12Index+1); //+1- amendment to non-vowel
+ } else if(a13Index!=-1 && a13Index>=rvIndex){
+ word = word.replace(/(amment)$/,'ant');
+ } else if(a14Index!=-1 && a14Index>=rvIndex){
+ word = word.replace(/(emment)$/,'ent');
+ } else if(a15Index!=-1 && a15Index>=rvIndex){
+ word = word.substring(0,a15Index+1);
+ }
+
+ /* Step 2a: Verb suffixes beginning i*/
+ var wordStep1 = word;
+ var step2aDone = false;
+ if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){
+ step2aDone = true;
+ var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i;
+ if(word.search(b1Regex) >= rvIndex){
+ word = word.replace(b1Regex,'$1');
+ }
+ }
+
+ /* Step 2b: Other verb suffixes*/
+ if (step2aDone && wordStep1 == word) {
+ if (word.search(/(ions)$/) >= r2Index) {
+ word = word.replace(/(ions)$/, '');
+ } else {
+ var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i;
+ if (word.search(b2Regex) >= rvIndex) {
+ word = word.replace(b2Regex, '');
+ } else {
+ var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i;
+ if (word.search(b3Regex) >= rvIndex) {
+ word = word.replace(b3Regex, '');
+ } else {
+ var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i;
+ if (word.search(b3Regex2) >= rvIndex) {
+ word = word.replace(b3Regex2, '');
+ }
+ }
+ }
+ }
+ }
+
+ if(oriWord != word.toLowerCase()){
+ /* Step 3 */
+ var rep = '';
+ if(word.search(/Y$/) != -1) {
+ word = word.replace(/Y$/, 'i');
+ } else if(word.search(/ç$/) != -1){
+ word = word.replace(/ç$/, 'c');
+ }
+ } else {
+ /* Step 4 */
+ //If the word ends s, not preceded by a, i, o, u, è or s, delete it.
+ if (word.search(/([^aiouès])s$/) >= rvIndex) {
+ word = word.replace(/([^aiouès])s$/, '$1');
+ }
+ var e1Index = word.search(/ion$/);
+ if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) {
+ word = word.substring(0, e1Index);
+ } else {
+ var e2Index = word.search(/(ier|ière|Ier|Ière)$/);
+ if (e2Index != -1 && e2Index >= rvIndex) {
+ word = word.substring(0, e2Index) + "i";
+ } else {
+ if (word.search(/e$/) >= rvIndex) {
+ word = word.replace(/e$/, ''); //delete last e
+ } else if (word.search(/guë$/) >= rvIndex) {
+ word = word.replace(/guë$/, 'gu');
+ }
+ }
+ }
+ }
+
+ /* Step 5: Undouble */
+ //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1');
+ word = word.replace(/(en|on)(n)$/,'$1');
+ word = word.replace(/(ett)$/,'et');
+ word = word.replace(/(el|eil)(l)$/,'$1');
+
+ /* Step 6: Un-accent */
+ word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1');
+ word = word.toLowerCase();
+ return word;
+};
+
+var eqOut = new Array();
+var noteqOut = new Array();
+var eqCount = 0;
+/*
+To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output.
+Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will
+compare the output with COut.
+ (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This
+ will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help.
+ */
+function testFr(){
+ var start = new Date().getTime(); //execution time
+ eqCount = 0;
+ eqOut = new Array();
+ noteqOut = new Array();
+ for(var k=0;k
+
+
+
+ Seleccionar teclado
Aquí puede establecer la disposición del teclado que desea usar con Mageia.
Se ha elegido una disposición de teclado sugerida (resaltada) para usted en
+función de las opciones de idioma y zona horaria previamente seleccionadas.
Seleccione su idioma preferido. Mageia utilizará esta selección durante la
+instalación y para su sistema instalado.
Mageia usa el soporte UTF-8 (Unicode) por defecto. Esto se puede desactivar
+en la pantalla Múltiples idiomas si sabe que no es
+apropiado para su idioma. La desactivación de UTF-8 se aplica a todos los
+idiomas instalados.
Puede cambiar el idioma de su sistema después de la instalación en la
+localización del sistema de Centro de Control de Mageia.
GRUB2 (con o sin menú gráfico) se utilizará exclusivamente como cargador de
+arranque para un sistema Legacy/MBR o Legacy/GPT.
De forma predeterminada, se escribirá un nuevo cargador de arranque en el
+MBR (Registro de arranque maestro) de su primer disco duro o en la partición
+de arranque del BIOS.
Grub2-efi en sistemas UEFI
GRUB2-efi se utilizará exclusivamente como cargador de arranque para un
+sistema UEFI.
De forma predeterminada, un nuevo cargador de arranque (Grub2-efi) se
+escribirá en el ESP (partición del sistema EFI).
Si ya hay sistemas operativos basados en UEFI instalados en su equipo
+(Windows 8 por ejemplo), el instalador de Mageia detectará el ESP existente
+creado por Windows y le agregará grub2-efi. Si no existe ESP, entonces se
+creará uno. Aunque es posible tener varios ESP, solo se requiere uno,
+independientemente del número de sistemas operativos que tenga.
Configuración del cargador de arranque.
Opciones principales del cargador de arranque
Cargador de arranque a usar
Esta función solo está disponible para los sistemas Legacy MBR / BIOS. Los
+usuarios de los sistemas UEFI no verán esta opción aquí.
Dispositivo de arranque
No cambie esto a menos que realmente sepa lo que está haciendo.
1
Este cuadro de texto le permite establecer un retraso, en segundos, antes de
+que se inicie el sistema operativo predeterminado.
Seguridad
Esto le permite establecer una contraseña para el cargador de arranque. Esto
+significa que se requerirá un nombre de usuario y una contraseña al iniciar
+para poder seleccionar una entrada de inicio o cambiar la
+configuración. Esto es opcional, y es probable que la mayoría de las
+personas no lo necesiten. El nombre de usuario es root y la contraseña es la
+que se elige a continuación.
Contraseña
Elija una contraseña para el cargador de arranque (opcional)
Contraseña (otra vez)
Vuelva a escribir la contraseña y DrakX verificará que coincida con la
+establecida arriba
Avanzado
Habilitar ACPI
ACPI (Configuración avanzada e interfaz de energía) es un estándar para la
+administración de energía. Puede ahorrar energía al detener los dispositivos
+no utilizados. Deseleccionarlo podría ser útil si, por ejemplo, su equipo no
+es compatible con ACPI o si cree que la implementación de ACPI podría causar
+algunos problemas (por ejemplo, reinicios aleatorios o bloqueos del
+sistema).
Activar SMP
Esta opción habilita/deshabilita el multiprocesamiento simétrico para
+procesadores multi-core
Activar APIC
Al habilitar esto, el sistema operativo tiene acceso al controlador de
+interrupción programable avanzado. Los dispositivos APIC permiten modelos de
+prioridad más complejos, y administración avanzada de IRQ (solicitud de
+interrupción).
Habilitar APIC local
Aquí puede establecer Local APIC, que administra todas las interrupciones
+externas para un procesador específico en un sistema SMP
Configuración del cargador de arranque
Por defecto
El sistema operativo se inicia de forma predeterminada.
Adjuntar
Esta opción le permite pasar información al kernel o decirle al kernel que
+le brinde más información mientras arranca.
Sondeo SO distinto
Si ya tiene otros sistemas operativos instalados, Mageia intenta agregarlos
+a su nuevo menú de inicio de Mageia. Si no desea este comportamiento,
+desmarque la opción Sondeo OS distinto.
Avanzado
Modo de vídeo
Esto establece el tamaño de la pantalla y la profundidad del color que se
+utilizará en el menú de inicio. Si hace clic en el triángulo hacia abajo, se
+le ofrecerán otras opciones de tamaño y profundidad de color.
No toque ni ESP ni MBR
Seleccione esta opción si no desea un arranque de Mageia, pero prefiere
+cargarlo desde otro sistema operativo. Recibirá una advertencia de que falta
+el cargador de arranque. Haga clic en Aceptar si está seguro de que
+comprende las implicaciones y desea continuar.
Otras opciones
Usando un cargador de arranque existente
El procedimiento exacto para agregar Mageia a un cargardor de arranque
+existente está fuera del alcance de esta documentación. Sin embargo, en la
+mayoría de los casos implicará ejecutar el programa de instalación del
+cargador de arranque correspondiente, que debería detectar Mageia y agregar
+automáticamente una entrada para él en el menú del cargador de
+arranque. Consulte la documentación del sistema operativo correspondiente.
Instalación sin un cargador de arranque
Si bien puede optar por instalar Mageia sin un cargador de arranque
+(consulte la sección 2.1 Avanzado), esto no se recomienda a menos que sepa
+absolutamente lo que está haciendo, ya que sin algún tipo de cargador de
+arranque su sistema operativo no podrá iniciar.
Agregando o modificando una entrada en el menú de arranque
Para hacer esto, necesita editar manualmente /boot/grub2/custom.cfg o usar
+el software de configuración de grub en su
+lugar (disponible en los repositorios de Mageia).
Esta es la pantalla que verá si seleccionó la opción Arrancar Mageia en el menú del soporte Live.
Probar hardware
Uno de los objetivos de usar el modo en vivo es probar que su hardware se
+cofigura correctamente por Mageia. Puede verificar si todos los dispositivos
+tienen un controlador en la sección de Hardware del Centro de Control de
+Mageia:
interfaz de red: configurarla con net_applet
Tarjeta gráfica: si ves la pantalla anterior, ya es correcta.
sonido: ya se ejecutó un jingle.
impresora: configure su impresora/s e imprima una página de prueba
escáner: escanee un documento desde...
Si todo es satisfactorio, puede proceder con la instalación. Si no, puede
+usar el botón Salir.
Nota
Los ajustes de configuración que aplique aquí se transfieren si decide
+continuar con la instalación.
Iniciar la instalación
Para iniciar la instalación del Live DVD en un disco duro o unidad SSD,
+simplemente haga clic en el icono Instalar en disco
+duro en el escritorio de Live. Luego verá esta pantalla, seguida
+por el paso de Particionamiento.
Si Mageia no lo convenció o no puede instalarlo correctamente, en resumen,
+quiere deshacerse de él, ése es su derecho y Mageia también le ofrece la
+posibilidad de desinstalarlo. Esto no es cierto para todos los sistemas
+operativos.
Después de realizar una copia de seguridad de sus datos, reinicie su DVD de
+instalación de Mageia y seleccione Rescatar sistema,
+luego Restaurar cargador de arranque de Windows. En el
+próximo arranque, solo tendrá Windows, sin opción para elegir su sistema
+operativo Mageia.
En Windows, para recuperar el espacio utilizado por las particiones de
+Mageia: haga clic en Inicio → Panel de control → Herramientas
+administrativas → Administración de
+equipo → Administración de discos de
+almacenamiento. Reconocerá una partición Mageia
+porque están etiquetadas como Desconocidas, y también por
+su tamaño y ubicación en el disco. Haga clic con el botón derecho en cada
+una de estas particiones y seleccione Eliminar para
+liberar el espacio.
Si está utilizando Windows XP, puede crear una nueva partición y formatearla
+(FAT32 o NTFS). A continuación, recibirá una letra de partición.
Si tiene Vista o 7, tiene una posibilidad más, puede extender la partición
+existente que está a la izquierda del espacio liberado. Hay otras
+herramientas de particionamiento que se pueden usar, como gparted, disponible para Windows y Linux. Como
+siempre, al cambiar las particiones, tenga mucho cuidado de hacer copias de
+seguridad de todo lo que sea importante para usted.