Forum

JiFile for Joomla!

JIFile
JiFile is a component for Joomla! that allows you to index file contents (PDF, DOC, etc..) to perform searches in them.

Learn more...  Demo

JoomPhoto Mobile

JPhotoMobile
JoomPhoto Mobile is a component for Joomla! that allows you to share the photos from your Android device to your site Joomla.

Learn more...  Demo

iFile Framework

IFile
IFile is an open source framework written entirely in PHP, allows the indexing of textual content of a document (DOC, PDF, EXCEL, etc.) and a quick search within them.

Learn more...  Demo

Easy Language

EasyLanguage
Easy Language is a plugin for easy and immediate management of multilingual texts in every possible area of joomla, articles, components, modules, metadata, template, other components(example K2) etc.

Learn more...

Article Book Effect

Article Book Effect
View Joomla articles with the effect turns the page of a book. This plugin will display the contents of an article in Joomla as a real book or magazine, using all the benefits of HTML5

Learn more...  Demo

 

Passport photo

Passport photo
The most popular Android app that allows you to print photos cards for your documents with your Android smartphone, in a simple and intuitive way.

Learn more...

 

Crazy Shadow

Crazy Shadow
Crazy Shadow is the 3D fast-paced and fun puzzle Android game! Try to rotate and drag shapes in the position of their shadows without fail! Solve in succession all combinations of levels of the game.

Learn more...

 

Admin Countdown

Admin Countdown
Module for Joomla! 2.5 and 3.x displays in the administration part of the site, a timer with countdown of the time remaining in your session.

Learn more...  Demo

 
Welcome, Guest
Username: Password: Remember me

TOPIC: Field "introtext" e indicizzazioni troncate

Field "introtext" e indicizzazioni troncate 20 Dec 2011 16:10 #15

  • Giampaolo
  • Giampaolo's Avatar
  • OFFLINE
  • Administrator
  • Posts: 465
  • Thank you received: 43
Ciao,
alcuni utilizzatori di IFile mi hanno fatto presente che dopo l'indicizzazione dei propri documenti, solo una parte del contenuto è visibile ed è presente nel field "introtext".

Di seguito una descrizione della problematica riscontrata ed eventuali altri problemi che si potrebbero verificare durante l'indicizzazione dei documenti.

Il contenuto del documento (Field: body) viene solo "indicizzato" e non storicizzato come viene fatto per il field "introtext" (che presenta solo i primi 200 caratteri del testo completo), ovvero si possono effettuare ricerche su tutto il contenuto ma non è possibile visualizzarlo.
Questa scelta è stata presa per due motivi ovvero:

1. Storicizzando anche il contenuto, la cartella creata da Lucene, che contiene l'indice, diventerebbe in poco tempo enorme con grande perdita di prestazioni. Di fatto andremmo a "duplicare" lo spazio del disco necessario dato che oltre al file fisico (PDF, DOC, etc) avremmo anche il testo salvato sul disco, ed in alcuni casi di hosting lo spazio è costoso.

2. Dato che la libreria indicizza solo documenti PDF, DOC etc.. a nostro avviso non era necessario rindondare del testo che è facilmente recuperabile visualizzando il file stesso che lo contiene utilizzando i field: root, name, filename, path etc.
Dalla versione 1.1.3 di IFile è ora possibile definire il tipo di indicizzazione dei default Fields utilizzati da IFile.
Questo permetterà di poter gestire in modo indipendente, senza dover modificare il codice, i singoli fields durante il processo di indicizzazione.

In alcuni casi la libreria tronca, durante l'indicizzazione, il testo del documento.

Questo potrebbe essere provocato dal tipo di analyzer utilizzato.

Va fatto presente che IFile utilizza a sua volta le librerie di Zend Search Lucene per la tokenizzazione e indicizzazione dei contenuti (ovvero la trasformazione del testo recuperato dal documento in semplici parole e la memorizzazione di queste in una struttura ben definita - il processo è diverso se utilizziamo l'interfaccia MySqli) e a volte (questo è capitato anche a noi) utilizzando il tipo di Encoding "UTF-8" Zend Search Lucene ritorna solo una porzione di testo. Questo perchè l'analyzer cerca di convertire il contenuto del testo in UTF-8 utilizzando la funzione "iconv".

La funzione "iconv" permette passandogli dei parametri, di ignorare (o trasformare) i caratteri che non fanno parte del range del charset passato.
Zend ha scelto di utilizzare la iconv, senza questi parametri.

Questo comporta che se durante l'indicizzazione del contenuto è presente un carattere diverso da quelli che si aspetta la funzione iconv, questa genera un E_NOTICE (trovato carattere illegale) e tronca il testo al carattere non corretto. Gli E_NOTICE non precludono il blocco del processo e quindi IFile continua indicizzando il testo incompleto ritornato dalla libreria della Zend.

C'è un modo, molto manuale, per risolvere questo problema, e sarebbe quello di intervenire direttamente sugli script del framework della Zend andando ad inserire nella chiamata alla "iconv" il parametro di IGNORE per permettergli di ignorare il carattere e continuare con la conversione.

Questo però è possibile se si può intervenire direttamente sui file del framework della Zend.
I file che utilizzano la iconv senza il parametro ignore sono:

Zend\Search\Lucene\Analysis\Analyzer\Common\Utf8.php - function reset()
Zend\Search\Lucene\Analysis\Analyzer\Common\Utf8Num.php - function reset()

sostituendola con:
$this->_input = iconv($this->_encoding, 'UTF-8//IGNORE', $this->_input);

Gli atri analyzer (Text e TextNum) utilizzano invece il parametro //TRANSLIT che cerca di sostituire il carattere nell'encoding richiesto.

Un unico avvertimento, questo meccanismo potrebbe provocare, su alcuni termini, la non corretta indicizzazione (potresti avere ad esempio la parola "potrà" indicizzata come "potr") e quindi la difficoltà di ricercarla.
If you like, if it was useful, consider a donation, Thanks
Se vuoi, se ti siamo stati utili, considera una donazione, Grazie
Help us by voting our extensions on Joomla.org:
JiFile
JoomPhoto Mobile
Easy Language
Last Edit: 21 Feb 2012 01:43 by Giampaolo.Reason: Evidenziato il paragrafo del troncamento del testo
The administrator has disabled public write access.
The following user(s) said Thank You: nicola

Re: Field "introtext" e indicizzazioni troncate 20 Feb 2012 16:31 #207

  • Luca
  • Luca's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 4
grazie mille e complimenti per il componente
The administrator has disabled public write access.