Package org.activemath.omdocjdom.index

whose front end is in package org.activemath.webapp.dict.

See:
          Description

Interface Summary
IndexConstants A pack of constant strings to be used to manipulate the search index.
 

Class Summary
AMIndex A class to describe the index for searching through the content extracted from MBase and maintained by the content-update-events.
AMIndexSearcher  
AMSearchUtilities  
IndexDescriptor A simple class to read and write index-descriptor XML file from the disk.
IndexRunner  
QueryMaker Deprecated. This class should be replaced by the classes of the package org.activemath.omdocjdom.index.queries.
 

Package org.activemath.omdocjdom.index Description

whose front end is in package org.activemath.webapp.dict.

The search tool functions and features are explained in ActiveMath's Software page about Search, and in the Paul Libbrecht's Thesis in chapter 6.

The main mission of the search tool is to offer an easy to use access to individual OMDoc content items by the paradigm of information retrieval: input of a small query and browsing through (parts of) a result list. This search should be error-tolerant and should be working for users in any language.

This package contains the following services:

Some services are provided by classes outside this package:

Expert Features of the Search Tool

The ActiveMath search tool can be grasped by browsing the source code or by exploring its functions as a user and as an advanced user.

Expert users are typically authors which have a broader choice of queries in the advanced search and are shown all the content items, not only the ones deemed applicable to the learners.

Authors will be often helped by the query syntax of the simple search which is documented there.

Author users can make use of the analyze function presented on the bottom of the search-tools' item-display with the letter "A". Clicking on this link presents a decomposition as token-streams of each of the fields this item will be decomposed in.

Expert users can also make use of the explain function which is available by a double-click on the little score-bullets on the left of the items of the search-results. This explanation shows the lucene-level query and the score of each of its parts.

Processes of the Search Tool: Indexing

Indexing of the search tool is done at the same time as the content-storage reload (see org.activemath.omdocjdom.slumb): on reload start, the invalidated items' index-documents are deleted, the new content items are passed to the search tool indexer (see AMIndex), as well as start and end signals.

The analysis process, however, employs a slight trick because only readers and strings can be passed as data objects: the analyzer is only passed an ID and the analyzer picks the the JDOM object from the ContentExtractor.

The indexing method convert the JDOM objects into a set of named fields, each containing sequences of tokens.

Processes of the Search Tool: Searching

Searching is done in the classical way Lucene does: a user enters a query which is submitted to the SearchController; the latter maintains a DictionaryState made mostly of org.activemath.webapp.dict.AMAbstractQuery. To be executed, this query is expanded into a query on each of the fields (applying analysis for some fields, respecting language). That query is run at Lucene which returns a list of documents in order of relevance (according to the query). The documents are then used to pick the ID which is used to present the search result list and the individual item views.