Hi Jim
the dictionary class was not designed to be sub-classed.
If you want to implement a custom dictionary you can use our event style
interface to parse a dictionary like file.
Have a look at the code in the Dictionary class which loads and
serializes it.
HTH,
Jörn
On 10/20/2012 06:36 PM, Jim - FooBar(); wrote:
Hello everyone,
as you've probably gathered fromt he subject line, I'm having issues
subclassing the Dictionary class. In a nutshell, I want to be able to
provide a mapping between names and synonyms which the current
dictionary doesn't seem to support. So my approach is the following:
1. create a class (MyDictionary) that extends Dictionary and overrides
'.contains()'
2. MyDictionary calls the constructor of the superclass with no args
(per 'super();')
3. it also hard-codes 'maxTokenCount' and 'minTokenCount' (10 & 1
respectively) because there is no setter method for them and are
declared private. Unless, one reads entries in from a xml file and
'puts' them in the Dictionary via 'EntryInserter' there is no way to
provide them even if we know the correct values. without doing this
the name-finder 'breaks out' the for-loop because this condition
doesn't hold:
if (lengthSearching > d.getMaxTokenCount()) { //maxTokenCount stays 0
if the .put() is never called
break; //breaks immediately
} else ...
....
anyway, I know it is not pretty to hard-code it like that but I
couldn't think of anything else...I have verified that MyDictionary
works as expected on its own. that is, I'm passing a string to
.contains() and it correctly says true / false. I have also verified
that when MyDictionary is passed to the DictionaryNameFinder it spends
some time searching which implies that the for-loop continues as
usual. Before hardcoding 'maxTokenCount' and 'minTokenCount' the call
to .find() would finish instantly cos it was never reaching the call
to .contains()...
My problem is that despite everything seemingly working as expected I
get 0 in all statistics!!! I can verify that when i use a proper xml
file with the regular Dictionary i get descent statistics so adding
synonyms in the search space can only improve statistics and decrease
performance. I do see a decrease in performance but certainly not in
performance! very weird stuff...
would you say that I need to follow any extra steps for subclassing
the Dictionary? It has many methods but only the .contains() and the
getMaxTokenCount() are used in the actual .find() method of the
NameFinder.
any clues/pointers? the odd thing is that MyDictionary on its own does
the right thing (regardless of what happens inside the .contains()
method).
Help please...
thanks in advance
Jim