Identifying among recent revisions to documents those that are relevant to a search query

A facility for reporting on a corpus of documents is described. The facility receives a user-specified search query. In response to the receiving, among documents in the corpus, the facility identifies a proper subset that have each (1) been modified in a manner relevant to the search query (2) at a recent time. For each of at least a portion of the identified documents, the facility causes to be presented information describing the document.

BACKGROUND

Electronic documents can contain content such as text, spreadsheets, slides, diagrams, charts, and images. Electronic documents can be the subject of a variety of activities, performed by a variety of people. These can include, for example: authoring a document, modifying/revising/editing a document, etc.

Some conventional search engines allow users to input a search query made up of one or more words, and use a document search index to return a list of documents in a group of documents (a “corpus”) that are relevant to the search query, such as documents in which all of the words in the search query occur; in which all of the words in the search query occur in close proximity to one another; in which all of the words in the search query occur in the same order as in the search query; etc.

SUMMARY

A facility for reporting on a corpus of documents is described. The facility receives a user-specified search query. In response to the receiving, among documents in the corpus, the facility identifies a proper subset that have each (1) been modified in a manner relevant to the search query (2) at a recent time. For each of at least a portion of the identified documents, the facility causes to be presented information describing the document.

DETAILED DESCRIPTION

The inventors have recognized several disadvantages endemic to conventional approaches to document search. First, in many cases, no documents can be found that are relevant to a search query as the only documents relevant to the search query were authored too recently to be included in a document search index. Also, documents that are found are often (1) only tangentially related to the search query, and/or (2) stale, in the sense of having been written significantly earlier and not containing information of current value.

In response to this recognition, the inventors have conceived and reduced to practice a software and/or hardware facility (“the facility”) for identifying among recent revisions to documents those that are relevant to a search query.

The facility maintains, across a corpus of documents, a revision index on the terms that are involved in revisions to the documents that also reflects the times at which revisions are made. In some embodiments, the facility maintains such a revision index at a low level of latency, such as taking only 0.01 second, 0.1 second, one second, 10 seconds, a minute, five minutes, etc. to add a revision to the revision index after the revision is performed. In some embodiments, the facility updates revision index synchronously with each revision, such that the revision is not shown to the person making it to be completed until the revision index is updated to reflect it. This approach to maintaining the revision index is sometimes described as “transactional.”

The facility receives a search query from user made up of one or more terms. The facility uses the index to identify recent revisions to documents that are relevant to the search query, and displays information about these recent relevant revisions. In various embodiments, the facility uses various weightings of relevance versus recency in selecting revisions to include in the revision search result and ordering or otherwise ranking these selected revisions. As one example, when the facility receives a “manganese cathodes” search query from user, it may identify revisions to two documents in the preceding half-hour as relevant to this search query, and display information about them, such as the name of the document, a link to the document, the author of the document, the time of the revision, a video replay of the revision, a live view of ongoing revisions to the document, etc.

In some embodiments, the facility performs this revision search in parallel with conventional document search, and presents the results from each in distinct sections of a user interface display. To extend the example of the “manganese cathodes” search query, the facility may also perform a conventional document search using the search query that identifies two other documents that have had content relevant to the search query for longer periods of time. In this case, the facility displays information about these two other documents at the same time as the two recent relevant revisions

In some embodiments, after presenting a revision search result for a search query, the facility monitors for new document revisions that are relevant to the search query. In some embodiments, the facility immediately adds these to the displayed revision search result as they occur. In some embodiments, the facility displays a visual indication that new document revisions relevant to the search query have been performed; the user can interact with this visual indication, such as by selecting it, in order to display the new relevant document revisions. To extend the example of the “manganese cathodes” search query, 90 seconds after the facility displays information about the two recent relevant revisions, it may determine that a new document revision has been performed that is relevant to the search query; in response, it displays information about this new document revision together with information about the original two recent relevant document revisions.

In some embodiments, the facility includes with information about each recent or new relevant document revision one or more controls for interacting with the author responsible for each of these revisions, such as controls for sending the author an asynchronous message—such as an email message, a text message, an instant message, a voice message, a meeting scheduling request, etc.—or interacting with the author in real time—such as in a voice call, a video call, a text chat session, a collaborative editing session focused on the document, etc.

In some embodiments, the facility uses a time-segmented revision index, in which the revision index is divided into segments each representing the revisions that occurred in a distinct period of time. For example, a first index segment may represent all of the revisions that occurred between 09:05:11 and 09:05:12, a second index segment may result represent all of the revisions that occurred between 09:05:12 and 09:05:13, etc. In some such embodiments, the facility traverses the index segments beginning with the latest in the direction of the earliest, and terminates the traversal once an adequate number of recent relevant revisions have been identified.

In some embodiments, the facility identifies document revisions relevant to each query without regard for when the revision was made.

In some embodiments, in identifying relevant document revisions relevant to a query, the facility considers revisions of particular relevance to the user issuing the query, such as by identifying revisions based on how close the user performing each revision is to the querying user in a social graph or an organizational graph.

By performing in some or all of these ways, the facility makes it easy for a user to learn about and engage with current work that is relevant to the user's search query, and therefore the user's present interests or needs.

Also, by performing in some or all of the ways described above and storing, organizing, and accessing information relating to document revisions in an efficient way, the facility meaningfully reduces the hardware resources needed to store and exploit this information, including, for example: reducing the amount of storage space needed to store the information relating to document revisions; and reducing the number of processing cycles needed to store, retrieve, or process the information relating to document revisions. This allows programs making use of the facility to execute on computer systems that have less storage and processing capacity, occupy less physical space, consume less energy, produce less heat, and are less expensive to acquire and operate. Also, such a computer system can respond to user requests pertaining to information relating to document revisions with less latency, producing a better user experience and allowing users to do a particular amount of work in less time.

FIG. 1is a block diagram showing some of the components typically incorporated in at least some of the computer systems and other devices on which the facility operates. In various embodiments, these computer systems and other devices100can include server computer systems, desktop computer systems, laptop computer systems, netbooks, mobile phones, personal digital assistants, televisions, cameras, automobile computers, electronic media players, etc. In various embodiments, the computer systems and devices include zero or more of each of the following: a central processing unit (“CPU”)101for executing computer programs; a computer memory102for storing programs and data while they are being used, including the facility and associated data, an operating system including a kernel, and device drivers; a persistent storage device103, such as a hard drive or flash drive for persistently storing programs and data; a computer-readable media drive104, such as a floppy, CD-ROM, or DVD drive, for reading programs and data stored on a computer-readable medium; and a network connection105for connecting the computer system to other computer systems to send and/or receive data, such as via the Internet or another network and its networking hardware, such as switches, routers, repeaters, electrical cables and optical fibers, light emitters and receivers, radio transmitters and receivers, and the like. While computer systems configured as described above are typically used to support the operation of the facility, those skilled in the art will appreciate that the facility may be implemented using devices of various types and configurations, and having various components.

FIG. 2is a block diagram showing indices used by the facility in some embodiments to service search queries. These search indices200include a document search index210and a document revisions index220. The document search index is used by the facility in order to determine conventional search results for a search query, such as by identifying documents that have the highest frequency or frequency-per-length of terms in the search query, phrases in the search query, the entire search query, etc.; have the terms of the search query in the closest proximity to each other; the documents that inverse document frequency metrics indicate are most distinguished from other documents by their use of the terms or phrases in the search query; etc. In various embodiments, the facility uses document search indices of various forms, such as an inverted index; a citation index; an n-gram index; a suffix tree; or a document-term matrix, for example. The document revisions index, also called the “edit event index” herein, is used by the facility to identify for each search query document revisions that were performed recently and are relevant to the search query. They may be relevant to the search query, for example, in that they involve adding or inserting some or all of the terms in the search query; changing the spelling or punctuation of some or all of the words in the search query; relocating some or all of the words in the search query; making changes at points near in the document to some or all of the words in the search query; etc. An example of a document revisions index used by the facility in some embodiments is shown inFIGS. 4 and 5, described below.

FIG. 3is a data flow diagram showing a data flow in which the facility maintains its search indices in some embodiments. In the data flow, one or more users310generates a stream320of document edit events. In various embodiments, these events can be at various levels of granularity, such as a per-character level; a per-word level; a per-sentence level; a per-paragraph level; a per-section level; a per-edit session level; etc. The events in the events stream can correspond to various different kinds of editing actions such as deleting text; inserting text; altering text; moving text; changing the formatting of text; etc. The facility uses the edit events in the document edit events stream to update an edit event index350(also called a “document revisions index”) to reflect information such as the textual terms to which the event related; the identity of the document that was edited; and the time of the edit. The facility also uses edit events in the document edit events stream to update a document store330, effectively changing the contents of the documents to be consistent with each edit event. The facility further uses the revised contents of the document store to update a conventional document search index340, such as by periodically crawling the document store. In some embodiments (not shown), some or all of the data and components shown inFIG. 3are implemented as part of a document graph architecture for representing documents and their contents.

FIG. 4is a block diagram showing sample contents of an edit event index implemented using time segmentation. The edit event index400is made up of index segments, such as index segments401-403. Each index segment represents edit events that occurred during a different time period. For example, index segments401-403each represent edit events that occurred during a different minute of time: index segment401represents edit events that were performed between 09:05:11 and 09:05:12 on Dec. 5, 2017; index segment402represents edit events that were performed between 09:05:12 and 09:05:13 on the same date; and index segment403represents the edit events that were performed between 09:05:13 and 09:05:14 on the same date. In various embodiments, the facility constructs index segments representing edit events that are performed in periods of time of different length, such as 0.1 seconds, one second, ten seconds, one minute, five minutes, ten minutes, 15 minutes, one hour, one day, etc. In some embodiments, as described above, the facility traverses the index segments from latest toward earliest, terminating this traversal after an adequate number of revisions relevant to the search grade have been found.

FIG. 5is a table diagram showing sample contents of an edit event index segment. The edit event index segment500is made up of rows, such as rows501-503, each divided into the following columns: a term column511containing a term to which an edit event relates; and a document id column512containing information identifying the document in which the corresponding edit was performed. For example, row501indicates that, during a period of time represented by the edit event index segment, an edit event was performed that relates to the term “cathode” in the document identified by document id 16913246. In various embodiments, each row of the edit event index segment includes various other information (not shown), such as the time of the edit event; the person performing the edit event; the substantive details of the edit event; the location of the edit event within the document; etc. In some embodiments, the facility includes in the edit event index segment information usable to access some or all of this information in sources of information external to the edit event index segment.

WhileFIG. 5and each of the table diagrams discussed below show a table whose contents and organization are designed to make them more comprehensible by a human reader, those skilled in the art will appreciate that actual data structures used by the facility to store this information may differ from the table shown, in that they, for example, may be organized in a different manner; may contain more or less information than shown; may be compressed and/or encrypted; may contain a much larger number of rows than shown, etc.

FIG. 6is a flow diagram showing a process performed by the facility in some embodiments to process a search query. In act601, the facility receives a search query, in some embodiments as a text string. In act602, the facility applies the search query to a conventional document search index in order to identify documents in the corpus that are relevant to the query. In act603, the facility populates a time-insensitive section of a search result presented to the user submitting the query with some or all of the documents identified in act602. In act604, the facility applies the query to the edit event index to identify recent edit events that are relevant to the query. In act605, the facility populates a time-sensitive section of the search result with information about added events identified in steps604and the documents in which they were performed. In act606, the facility applies the query to new edit events, such as when they are received at the edit event index, when they are present in the document edit event stream, etc. In act607, the facility updates the time-sensitive section of the search result with edit events identified in act606and the documents in which they were performed. After act607, the facility continues in act606.

Those skilled in the art will appreciate that the acts shown inFIG. 6and in each of the flow diagrams discussed below may be altered in a variety of ways. For example, the order of the acts may be rearranged; some acts may be performed in parallel; shown acts may be omitted, or other acts may be included; a shown act may be divided into subacts, or multiple shown acts may be combined into a single act, etc.

FIG. 7is a display diagram showing a sample search result presented by the facility in some embodiments. The search result700shows the search query701submitted by the user, here “manganese cathodes”. The search result further includes a time-insensitive section710containing information about documents that are relevant as a whole to the search query. This includes information711about a first document and information712about a second document. The search result also includes a time-sensitive section720, including information about recent revisions relevant to the search query and the documents in which they were performed; this includes information721about a revision to a third document, and information722about a revision to a fourth document.

FIG. 8is a display diagram showing a sample display presented by the facility in some embodiments when an additional revision relevant to the search query is performed after the search result is initially presented. By comparing display800shown inFIG. 8to display700shown inFIG. 7, it can be seen that information823has been added to the time-sensitive section820, and relates to a more-recent relevant revision to a fifth document. In some embodiments (not shown), before adding information823to the search result, the facility displays a visual indication that information about additional revisions is available—such as an icon, which the user can interact with in order to cause the facility to display this additional information—such as by selecting the visual indication.

In some embodiments, the facility provides a method in a computing system for reporting on a corpus of documents, comprising: receiving a user-specified search query; in response to the receiving, (a) among documents in the corpus, identifying a proper subset that have each (1) been modified in a manner relevant to the search query (2) at a recent time; and (b) for each of at least a portion of the identified documents, causing to be presented information describing the document.

In some embodiments, the facility provides one or more instances of computer-readable media collectively having contents configured to cause a computing system to perform a method for reporting on a corpus of documents, the method comprising: receiving a user-specified search query; in response to the receiving, (a) among documents in the corpus, identifying a proper subset that have each (1) been edited in a manner relevant to the search query (2) at a recent time; and (b) for each of at least a portion of the identified documents, causing to be presented information describing the document.

In some embodiments, the facility provides a computing system, comprising: a processor; and a memory, the memory having contents that, when executed by the processor, cause the computing system to perform a method for reporting on a corpus of documents, the method comprising: receiving a user-specified search query; in response to the receiving, (a) among documents in the corpus, identifying a proper subset that have each (1) been edited in a manner relevant to the search query (2) at a recent time; and (b) for each of at least a portion of the identified documents, causing to be presented information describing the document.

In some embodiments, the facility provides one or more instances of computer-readable media collectively storing an index data structure reflecting revisions each to a document among a corpus of documents, comprising: information that, for each of a plurality of terms, identifies edits each to a document among the corpus that involve the term, such that, for a search query comprising one or more terms, the information is usable to identify edits to documents among the corpus that are relevant to the search query.

It will be appreciated by those skilled in the art that the above-described facility may be straightforwardly adapted or extended in various ways. While the foregoing description makes reference to particular embodiments, the scope of the invention is defined solely by the claims that follow and the elements recited therein.