From dab54834b81c4a659faa4ee343c615dc879d21b0 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Fri, 16 Jun 2006 10:46:04 +0000 Subject: [PATCH] Fixed unreported bug when doing Lucene search across all attributes on types that contain numeric properties git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3123 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../lucene/analysis/DoubleTokenFilter.java | 17 ++++++++++++----- .../impl/lucene/analysis/FloatTokenFilter.java | 17 ++++++++++++----- .../lucene/analysis/IntegerTokenFilter.java | 17 ++++++++++++----- .../impl/lucene/analysis/LongTokenFilter.java | 18 +++++++++++++----- 4 files changed, 49 insertions(+), 20 deletions(-) diff --git a/source/java/org/alfresco/repo/search/impl/lucene/analysis/DoubleTokenFilter.java b/source/java/org/alfresco/repo/search/impl/lucene/analysis/DoubleTokenFilter.java index ae87ed6e6b..462df15554 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/analysis/DoubleTokenFilter.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/analysis/DoubleTokenFilter.java @@ -49,11 +49,18 @@ public class DoubleTokenFilter extends Tokenizer Token candidate; while((candidate = baseTokeniser.next()) != null) { - Double d = Double.valueOf(candidate.termText()); - String valueString = NumericEncoder.encode(d.doubleValue()); - Token doubleToken = new Token(valueString, candidate.startOffset(), candidate.startOffset(), - candidate.type()); - return doubleToken; + try + { + Double d = Double.valueOf(candidate.termText()); + String valueString = NumericEncoder.encode(d.doubleValue()); + Token doubleToken = new Token(valueString, candidate.startOffset(), candidate.startOffset(), + candidate.type()); + return doubleToken; + } + catch (NumberFormatException e) + { + // just ignore and try the next one + } } return null; } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/analysis/FloatTokenFilter.java b/source/java/org/alfresco/repo/search/impl/lucene/analysis/FloatTokenFilter.java index 387707e1b6..c591ef2724 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/analysis/FloatTokenFilter.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/analysis/FloatTokenFilter.java @@ -49,11 +49,18 @@ public class FloatTokenFilter extends Tokenizer Token candidate; while((candidate = baseTokeniser.next()) != null) { - Float floatValue = Float.valueOf(candidate.termText()); - String valueString = NumericEncoder.encode(floatValue.floatValue()); - Token floatToken = new Token(valueString, candidate.startOffset(), candidate.startOffset(), - candidate.type()); - return floatToken; + try + { + Float floatValue = Float.valueOf(candidate.termText()); + String valueString = NumericEncoder.encode(floatValue.floatValue()); + Token floatToken = new Token(valueString, candidate.startOffset(), candidate.startOffset(), + candidate.type()); + return floatToken; + } + catch (NumberFormatException e) + { + // just ignore and try the next one + } } return null; } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/analysis/IntegerTokenFilter.java b/source/java/org/alfresco/repo/search/impl/lucene/analysis/IntegerTokenFilter.java index 0531e78394..c0a481b640 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/analysis/IntegerTokenFilter.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/analysis/IntegerTokenFilter.java @@ -49,11 +49,18 @@ public class IntegerTokenFilter extends Tokenizer Token candidate; while((candidate = baseTokeniser.next()) != null) { - Integer integer = Integer.valueOf(candidate.termText()); - String valueString = NumericEncoder.encode(integer.intValue()); - Token integerToken = new Token(valueString, candidate.startOffset(), candidate.startOffset(), - candidate.type()); - return integerToken; + try + { + Integer integer = Integer.valueOf(candidate.termText()); + String valueString = NumericEncoder.encode(integer.intValue()); + Token integerToken = new Token(valueString, candidate.startOffset(), candidate.startOffset(), + candidate.type()); + return integerToken; + } + catch (NumberFormatException e) + { + // just ignore and try the next one + } } return null; } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/analysis/LongTokenFilter.java b/source/java/org/alfresco/repo/search/impl/lucene/analysis/LongTokenFilter.java index 79e00d9326..25be1eb13c 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/analysis/LongTokenFilter.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/analysis/LongTokenFilter.java @@ -19,6 +19,7 @@ package org.alfresco.repo.search.impl.lucene.analysis; import java.io.IOException; import java.io.Reader; +import org.alfresco.error.AlfrescoRuntimeException; import org.apache.lucene.analysis.Token; import org.apache.lucene.analysis.Tokenizer; import org.apache.lucene.analysis.standard.StandardTokenizer; @@ -49,11 +50,18 @@ public class LongTokenFilter extends Tokenizer Token candidate; while((candidate = baseTokeniser.next()) != null) { - Long longValue = Long.valueOf(candidate.termText()); - String valueString = NumericEncoder.encode(longValue.longValue()); - Token longToken = new Token(valueString, candidate.startOffset(), candidate.startOffset(), - candidate.type()); - return longToken; + try + { + Long longValue = Long.valueOf(candidate.termText()); + String valueString = NumericEncoder.encode(longValue.longValue()); + Token longToken = new Token(valueString, candidate.startOffset(), candidate.startOffset(), + candidate.type()); + return longToken; + } + catch (NumberFormatException e) + { + // just ignore and try the next one + } } return null; }