1. A method of forming a keyword based search query, comprising: receiving a plurality of search keywords that comprise the query from a searcher, each search keyword representing a keyword group; for each keyword group, visually presenting a user interface in response to a selection of the keyword group, the user interface including: a list of a plurality of purpose-related keywords belonging to the keyword group, a plurality of suggested keywords derived from one or more of the purpose-related keywords in the keyword group, each of the suggested keywords selectable by the searcher to add to the list of purpose-related keywords in the keyword group, a field for receiving an entry of a keyword from the searcher to add to the purpose-related keywords in the keyword group, and for each purpose-related keyword in the keyword group, a searcher weight control for assigning a weight to the purpose-related keyword, each weight representing a searcher-defined relative importance setting for the purpose-related keyword; for each keyword group, receiving from the searcher via the user interface an assignment of a weight to at least one purpose-related keyword in the keyword group from a searcher weight control associated with the at least one purpose-related keyword, the assigned weight identifying a relative importance of the at least one purpose-related keyword relative to at least one other purpose-related keyword in the keyword group; receiving from the searcher via the user interface a group importance weight for each keyword group of the plurality of the keyword groups; performing the keyword based search using the purpose-related keywords in the keyword groups of the query; removing a keyword from a keyword group in response to an indication received from the searcher; generating a score for each of a plurality of results of the search, the score based on the weight of each purpose-related keyword in the plurality of keyword groups and the group importance weight for each of the keyword groups; and sorting the results using the score for each result.