sdx-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sdx-developers] Le highlighter de la mort


From: Pierrick Brihaye
Subject: [sdx-developers] Le highlighter de la mort
Date: Fri, 19 Sep 2003 09:44:45 +0200
User-agent: Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02

Salut,

Résultats des observations de la soirée : pas encore la tête trop claire pour analyser...

Voici le code de highlighting ; j'ai ajouté un commentaire (/* */) car je trouve que la terminologie choisie prête à confusion :

while ((token = stream.next()) != null) {
  startOffset = token.startOffset();
  endOffset = token.endOffset();
  /* TODO : rename originalTextAtPosition ? */
  tokenText = text.substring(startOffset, endOffset);

  // append text between end of last token (or beginning of text) and
  //start of current token
  if (startOffset > lastEndOffset) {
    char[] chars =
      text.substring(lastEndOffset, startOffset).toCharArray();
    if (chars != null)
      this.xmlConsumer.characters(chars, 0, chars.length);
  }

  String termText = token.termText();
  // does query contain current token?
  if (Utilities.checkString(termText) && this.terms != null
    && this.terms.contains(termText))
    highlightTerm(tokenText, termText);
  else {
    char[] chars = tokenText.toCharArray();
    if (chars != null)
      this.xmlConsumer.characters(chars, 0, chars.length);
  }

  lastEndOffset = endOffset;
}


Mon problème est là :

while ((token = stream.next()) != null) {

... va me renvoyer des tokens dont certains auront un un getPositionIncrement() égal à 0.

Si mon analyse est bonne :

else {
  char[] chars = tokenText.toCharArray();
  if (chars != null)
    this.xmlConsumer.characters(chars, 0, chars.length);
}

Va donc me renvoyer *chaque* token qui n'est pas dans la "liste de termes" : this.terms (qui pourrait être renommée this.wantedHighlights ?). Je vous recommande le résultat de cette manipulation : très impressionnant :-)

En fait, je pense qu'il faudrait avoir ça :

else {
  //Check whether this text has already been emitted
  if (token.getPositionIncrement() != 0) {
    char[] chars = tokenText.toCharArray();
    if (chars != null)
      this.xmlConsumer.characters(chars, 0, chars.length);
  }
}

Est-ce que vous confirmez l'analyse ?

Je dois avouer que je n'ai aucune idée de l'implication pour des tokens dont le getPositionIncrement() serait > 1. J'ai bien peur que chez Lucene, ça ne soit pas très clair non plus :-)

A+

--
Pierrick Brihaye, informaticien
Service régional de l'Inventaire
DRAC Bretagne
mailto:address@hidden





reply via email to

[Prev in Thread] Current Thread [Next in Thread]