Extending the Software

This section is only meaningful for users with some basic background in Java programming and who have downloaded the development version of jWebMiner.

jWebMiner has been designed with an architecture that emphasizes extensibility. In addition to future improvements from the original author, it is also hoped that technically-inclined users will add functionality to the software as suits them and make the results available to the music information retrieval research community as a whole.

In order to facilitate future development, specific guidelines are included here on extending the two areas of the software that appear the most likely to be expanded on in the future.

Adding Web Services

jWebMiner currently includes functionality for accessing web services provided by Google and Yahoo!. It may be beneficial in the future to add services to access providers such as Last.FM, Amazon, etc.

Each web service is implemented as a separate class in the mckay.utilities.webservices package. Each such class must extend the mckay.utilities.webservices.NetworkSearch class and implement its abstract methods. Examples of such classes are mckay.utilities.webservices.GoogleWebSearch and mckay.utilities.webservices.YahooWebSearch.

Once a new such class has been implemented, it must be added to the getUnconfiguredSearchers method of the jWebMiner.AnalysisProcessor class. Presumably it will also be useful to add a checkbox to the jWebMiner.gui.OptionsPanel JPanel in order to allow users to decide whether or not to use the new service and so that the getUnconfiguredSearchers method mentioned above can check to see if the user has chosen to use it.

Finally, it may be helpful to add a reference to the new web service in the constructor for the mckay.utilities.webservices.NetworkSearchDialog JFrame and the instantiation using this constructor in the actionPerformed method of the jWebMiner.gui.OuterFrame class. It will also be necessary to add a reference to the name of the new web service in the processWebServices method of the mckay.utilities.webservices.NetworkSearchDialog class so that users will be able to select the new service in this dialog box.

Adding Scoring Metrics

jWebMiner's initial implementation includes two co-occurrence and four cross tabulation scoring metric formulas for calculating feature values. It may be useful to add additional formulas in the future so that they can be experimented with and used.

The first step to doing this is to add a radio button to the appropriate Scoring Function section of the jWebMiner.gui.OptionsPanel JPanel in order to allow users to select the new function. An appropriate unique public static final int code should then be added to the jWebMiner.gui.OptionsPanel class so that this code can be used to identify this new formula.

Three methods of the jWebMiner.AnalysisProcessor class then need to be modified to enable the new formula. The first is the findNumberOfTopLevelTasks method, which must return the number of different types of hit counts that must be performed to use the new formula (see the class and method documentation). The second is the findRawNumberOfQueries method, which returns the total number of queries that must be submitted to access web services to fulfill the needs of the new formula. Finally, the performProcessing method must be modified so that it actually implements the new formula.

-top of page-