I got an analyzer which, if the fieldname is integer, adds a "integerfilter"
to pad the number.
The problem is that though the padding is done, I am not getting the padded
number as output.
class myAnalyzer(object):
def __init__(self):
pass
def tokenStream(self, fieldName, reader):
tokenStream = StandardFilter(StandardTokenizer(reader))
if fieldName == "integer":
tokenStream = integerFilter(tokenStream)
print tokenStream
return tokenStream
class integerFilter(object):
def __init__(self, tokenStream):
self.input = tokenStream
def next(self):
token = self.input.next()
if token is None:
return None
token.termText = NumberUtils.pad(int(token.termText()))
print token.termText
return token
analyzer = myAnalyzer.myAnalyzer()
directory = FSDirectory.getDirectory(LuceneDir, False)
searcher = IndexSearcher(directory)
qParser =
wrapAnalyzer(self.analyzer).queryParser(CustomQueryParser.CustomQueryParser(
), defField)
print qParser.parseQuery("integer:200000")
Output:
myAnalyzer: <Modules.Lucene.integerFilter.integerFilter object at
0x01AA7890>
IntegerFilter: 0000200000
qParser: integer:200000
As you can see the integerfilter is added, and the number is padded, but the
parser returns the number without the padding....
Anyone who knows what is wrong?
_______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev