1. A method for constructing a search database using an ontology, the method comprising: via at least one processor: obtaining a list of items, each item corresponding to a potential search result; obtaining a list of terms from an ontology that describes all of the items, each term being an attribute of a corresponding item; dividing the terms into user-selectable search queries and non-selectable terms; activating the items and the terms as nodes in a network, wherein: the nodes are connected based on semantic relationships specified by the ontology, the network has three layers, a first layer including a node for each of the items, a second layer including a node for each search query, and a third layer including a node for each non-selectable term, the second layer nodes correspond to user-observed states of their respective terms, and the third layer nodes correspond to hidden states of the terms represented in the second layer; and configuring the network such that a probability of nodes in the first layer is determined by updating states of nodes in the third layer: deterministically based on the semantic relationships, and probabilistically based on at least one of (ii) frequency information indicating a frequency with which a term of a node in the third layer is known to occur when an associated item of a node in the first layer also occurs and (ii) a predefined false positive or false negative rate.