A method of searching that comprises receiving a user query from a user.
After receiving the user query, the method performs a search based on the
user query to produce results that are ranked. The results comprise
references to entities. The method contacts the entities to determine
whether entities in the results desire to change their rank in the
results, and charges entities that increase their rank. After charging
the entities and changing rankings of the results, the method reports the
results with changed rankings to the user, and credits entities that
decrease their rank.