A method for implementing a dynamic free-text search database, the dynamic free-text search database storing first data, generated by at least one processor, representing a first relationship including a first keyword, a first trip, and a first weight value, the method comprising: receiving, by the at least one processor, a plurality of free-text search requests; calculating, by the at least one processor, a second weight value for the first relationship based on the free-text search requests, wherein the second weight value differs from the first weight value; and transforming, by the at least one processor, the first data into second data by inserting the second weight value into the first data such that the first relationship includes the second weight value, wherein calculating the second weight value for the first relationship based on the free-text search requests comprises: defining a plurality of potential events for the first relationship that may occur with respect to a travel proposal returned in reply to the free-text search requests based on the first relationship; for each free-text search request, querying the dynamic free-text search database for the first relationship matching the free-text search request and returning one or more travel proposals based on the first relationship; recording a number of occurrences of each potential event with respect to the one or more travel proposals returned for the free-text search requests; and computing the second weight value for the first relationship based on the number of occurrences, and wherein returning the one or more travel proposals based on the first relationship comprises: for each free-text search request: applying a temporary adjustment to a plurality of event weights to define temporarily-adjusted event weights, wherein each event weight corresponds to one of the potential events; and returning the one or more travel proposals based on the temporarily-adjusted event weights. receiving, by the at least one processor, a plurality of free-text search requests; calculating, by the at least one processor, a second weight value for the first relationship based on the free-text search requests, wherein the second weight value differs from the first weight value; and transforming, by the at least one processor, the first data into second data by inserting the second weight value into the first data such that the first relationship includes the second weight value, wherein calculating the second weight value for the first relationship based on the free-text search requests comprises: defining a plurality of potential events for the first relationship that may occur with respect to a travel proposal returned in reply to the free-text search requests based on the first relationship; for each free-text search request, querying the dynamic free-text search database for the first relationship matching the free-text search request and returning one or more travel proposals based on the first relationship; recording a number of occurrences of each potential event with respect to the one or more travel proposals returned for the free-text search requests; and computing the second weight value for the first relationship based on the number of occurrences, and defining a plurality of potential events for the first relationship that may occur with respect to a travel proposal returned in reply to the free-text search requests based on the first relationship; for each free-text search request, querying the dynamic free-text search database for the first relationship matching the free-text search request and returning one or more travel proposals based on the first relationship; recording a number of occurrences of each potential event with respect to the one or more travel proposals returned for the free-text search requests; and computing the second weight value for the first relationship based on the number of occurrences, and wherein returning the one or more travel proposals based on the first relationship comprises: for each free-text search request: applying a temporary adjustment to a plurality of event weights to define temporarily-adjusted event weights, wherein each event weight corresponds to one of the potential events; and returning the one or more travel proposals based on the temporarily-adjusted event weights. applying a temporary adjustment to a plurality of event weights to define temporarily-adjusted event weights, wherein each event weight corresponds to one of the potential events; and returning the one or more travel proposals based on the temporarily-adjusted event weights.