View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Los Pimps - Milestone 5

Spring 2004 Milestone 5

Overview:
Our goal for this milestone was to be able to add searching abilities to our gui. We had to implement a way to do a local search, which is a search within geneologies already implemented or added to the system, as well as implement a web search, which was to search for individuals in given Geneological web sites. In our gui, one would have to hit the search button, which would bring up a view of fields in which to input person information. Then one could hit either search locally, or search online. The search online button would prompt the user to pick a given website to search for that person. In either case, all matches would be displayed in the left corner of our gui with their percentage match next to them. For this phase, we displayed anyone who matched from 60% and up. This was more for the fact to show that we had found possible matches. This search percentage was not used in the next milestone which dealt with merging. In that milestone we made a more strict requirment that individuals matched by at least 90% to be considered matches.

Local Search:
For the local search, we implemented a LocalSearch class which would use a SoundexGenerator class to find possible matches. The Soundex generator would match based on name, and other person criteria to determine the best possible matches and then rank them accordingly. This is all explained in much better detail here Los Pimps - Matching Tutorial.

Web Search:
Our web Searching worked really well. It was quick and stable. We are also pretty proud of how simple our implementation was. Many people used the Squeak HTML parser. DON'T!!!
That thing gives you OrderedCollection HELL. Stick with using little tricks on the actual HTML source. It's easier.

Here are a few things you should know:



page := HTTPSocket httpGet: webPageString.

page ifNil: [
"Throw some kind of error up"
^nil.].

pageString :=(page contents) asString.



Modify this message to deal with site validation.

validSite: site
"makes sure the site is valid"
|test addr|
addr := site.

test:= NetNameResolver addressForName: addr timeout: 15.
(test = nil) ifTrue:
[^false.] ifFalse:
[^true.].


Uploaded Image: onlinesearch.JPG


Conclusion:
This milestone was, in our opinions, one of the easier milestones. The best advice would be to make sure you have a solid searching algorithm in place because it will be needed for later milestones. This will save a lot of headaches down the road. Also, as with all the other projects, start early and make sure you have a good design plan. This makes a world of difference in trying to finish each milestone. A few problems we ran into were with the actual searching algorithm. Soundex matching is not as accurate, so, as we did, look at the basic algorithm, and then try to expand upon it to make it better. Making it perfect is not probable, so do what you can to make it work for the types of information that you will be dealing with. As mentioned in our tutorial, you can see the adjustments we made and you can agree or disagree, and I am sure come up with other ways you might have tried to implement it. Either way, soundex matchings is a good start, but it is far from perfect.

Links to this Page