{
  "checks": {
    "positive_hits": true,
    "quickwit_binary": true,
    "search_command": true,
    "version_command": true
  },
  "observed_version": "Quickwit 0.9.0 (x86_64-unknown-linux-gnu 2026-07-25T17:48:09Z cc420c3)",
  "passed": true,
  "search_output": "{\n  \"num_hits\": 10,\n  \"hits\": [\n    {\n      \"answerId\": 16049,\n      \"body\": \"Not sure if this is what you are after but you can search source code on Google. Follow the link for a search on 'function:reduce() lang:python' on Google Code search At first glance the following projects use reduce() MoinMoin Zope Numeric ScientificPython etc. etc. but then these are hardly surprising since they are huge projects. The functionality of reduce can be done using function recursion which I guess Guido thought was more explicit. Update: Since Google's Code Search was discontinued on 15-Jan-2012, besides reverting to regular Google searches, there's something called Code Snippets Collection that looks promising. A number of other resources are mentioned in answers this (closed) question Replacement for Google Code Search?. Update 2 (29-May-2017): A good source for Python examples (in open-source code) is the Nullege search engine. \",\n      \"creationDate\": \"2008-08-19T12:16:01Z\",\n      \"questionId\": 15995,\n      \"type\": \"answer\",\n      \"user\": \"199\"\n    },\n    {\n      \"answerId\": 14908,\n      \"body\": \"This is a HUGE questions, I wouldn't know how to begin... So let me just try giving you the right \\\"terms\\\" so you can refine your quest: First, understand that Speech Recognition is a diverse and complicated subject, and it has many different applications. People tend to map this domain to the first thing that comes to their head (usually, that would be computers understanding what you are saying like in IVR systems). So first lets distinguise the concept into the main categories: Human-to-Machine: Applications that deal with understanding what a human is saying, but the human knows he is talking to a machine and the grammar is very limited. Examples are Computer automation Specialized: Pilots automating some controls for example (noise a huge problem) IVR (Interactive Voice Response) systems like Google-411 or when you call the bank and the computer on the other side says \\\"say 'service' to get customer service\\\" human-to-human (Spontaneous speech): This is a bigger, more complex problem. Here we can also break it down into different applciations: Call Center: conversation between Agent-Customer, phone quality, compressed Intelligence: radio/phone/live conversations between 2 or more individuals Now, Speech-To-Text is not what you should be saying that you care about. What you care about is solving a problem. Different technologies are used to solve different problems. See an overview here of some of them. to summarize, other approaches are Phonetic transcription, LVCSR and direct based. Also, are you interested in being the PHd behind the technology? you would need a Masters equivalent involving Signal processing and probably a PHd to be cutting edge. In which case, you will work for a company that develops the actual speech engine. Companies like Nuance and IBM are the big ones, but also Phillips and other startups exist. On the other hand, if you want to be the one implementing applications, you will not be working on the engine, but working on building application that USE the engine. A good analogy I think is form the gaming industry: Are you developing the graphic engine (like the Cry engine), or working on one of several hundred games, all use the same graphic engine? Don't get me wrong, there is plenty to work on the quality of the search also outside the IBM/Nuance of the world. The engine is usually very open, and there are a lot of algorithmic tweaking to be done that can dramatically affect performance. Each business application has different constraints and cost/benefit function, so you can make experiments for many years building better voice recognition based applications. one more thing: in general, you would also want to have good statistics background the lower in the stack you want to be. At this point in time, I'm mainly interested in being able to create applications that allow automation Good, we are converging here... Then you have no interest in \\\"Speech-to-Text\\\". That buzzwords takes you to the world of full transcription, a place you do not need to go to. You should be focusing on some of the more Human-to-Machine technologies like Voice XML and the ones used in IVR systems (Nuance is the biggest player there) \",\n      \"creationDate\": \"2008-08-18T16:56:43Z\",\n      \"questionId\": 14837,\n      \"type\": \"answer\",\n      \"user\": \"350\"\n    },\n    {\n      \"acceptedAnswerId\": 14908,\n      \"body\": \"I'm really interested in speech-to-text algorithms, but I'm not sure where to start studying up on them. A bunch of searching around led me to this, but it's from 1996 and I'm fairly certain that there have been improvements since then. Does anyone who has any experience with this sort of stuff have any recommendations for reading / source code to examine? Or just general advice on what I should be trying to learn about if I want to get into the world of writing speech recognition programs (sometimes it's hard to know what to search for if you don't have much knowledge about the domain). Edit: I'd like to do something cross-platform, but for the moment I'd be targeting linux. Edit 2: Thanks csmba for the well-thought out reply. At this point in time, I'm mainly interested in being able to create applications that allow automation, or execution of different commands through voice. So, a limited amount of recognizable commands being able to be strung together. An example would be a music player that took commands like \\\"Play the album Hello Everything by Squarepusher\\\", or an application launcher that allowed the user to create voice-shortcuts to launch specific apps. I realize that it's a pretty giant problem, and that I have nowhere near the level of knowledge required right now to tackle implementing an entire recognition engine, although the techniques involved with doing so fascinate me, and it is something I'd like to work myself up to doing. In all likelihood, I'll probably end up picking up a book or two on the subject and studying up / playing with \\\"simple\\\" implementations in my free time. \",\n      \"creationDate\": \"2008-08-18T16:05:43Z\",\n      \"questionId\": 14837,\n      \"tags\": [\n        \"language-agnostic\",\n        \"speech-recognition\"\n      ],\n      \"title\": \"How to get started with speech-to-text?\",\n      \"type\": \"question\",\n      \"user\": \"242853\"\n    },\n    {\n      \"answerId\": 13871,\n      \"body\": \"Depends a lot on the kind of queries you've got to parse and somewhat on the structure of the data in your database. I'm going to assume that you're not trying to do full text search in a DB (i.e. a search engine across your entire DB) because, as most Information Retrieval people will tell you, the performance for that is terrible. Inverted indexes are most certainly the best way of doing that. Tell us a bit more about the actual problem: what are the users going to input, what are they expecting as output, and what's the data model like. Design a search solution without those pieces of information, and you'll get a far from optimal result. \",\n      \"creationDate\": \"2008-08-17T19:28:04Z\",\n      \"questionId\": 13863,\n      \"type\": \"answer\",\n      \"user\": \"1035\"\n    },\n    {\n      \"body\": \"I have been trying to find an easy way to parse a search query and convert it to an SQL query for my DB. I have found two solutions: Lucene: Powerful Java-based search engine, contains a query parser but it isn't very configurable and I could find a way to easily hack/adapt it to create SQL queries. ANTLR: A veteran text lexer-parser. Used for building anything from compilers to sky scrapers. ANTLR is highly configurable but everyone touching the code from now on will have to learn a new language... Any other ideas? \",\n      \"creationDate\": \"2008-08-17T19:21:26Z\",\n      \"questionId\": 13863,\n      \"tags\": [\n        \"java\",\n        \"search\"\n      ],\n      \"title\": \"Parsing search queries in Java\",\n      \"type\": \"question\",\n      \"user\": \"1651\"\n    },\n    {\n      \"acceptedAnswerId\": 12560,\n      \"body\": \"I know google has things like linkto:yourdomain.com and Alexa is around, but there's nothing that I can query and get the number of sites that link to me. Anyone know of such a thing, other than using Google or another search engine and scraping the HTML results? \",\n      \"creationDate\": \"2008-08-15T17:58:54Z\",\n      \"questionId\": 12555,\n      \"tags\": [\n        \"api\",\n        \"analytics\",\n        \"metrics\",\n        \"counter\",\n        \"hit\"\n      ],\n      \"title\": \"Is there an API that allows you to find out how many sites link to yours?\",\n      \"type\": \"question\",\n      \"user\": \"572\"\n    },\n    {\n      \"answerId\": 5474,\n      \"body\": \"If you have a public facing website, the real business case is SEO. Accessibility is important and maintaining semantic (X)HTML is much easier than maintaining table layouts, but that #1 spot on Google will bring home the bacon. For example: Monthly web report: 127 million page views for July Monthly web report: 127 million page views for July ... Latimes.com keeps getting better at SEO (search engine optimization), which means our stories are ranking higher in Google and other search engines. We are also performing better on sites like Digg.com. All that adds up to more exposure and more readership than ever before. If you look at their site, they've got a pretty decent CSS layout going. Generally, you find relatively few table layouts performing well in the SERPs these days. \",\n      \"creationDate\": \"2008-08-07T23:22:57Z\",\n      \"questionId\": 5323,\n      \"type\": \"answer\",\n      \"user\": \"60\"\n    },\n    {\n      \"answerId\": 3929,\n      \"body\": \"This might be a bit of a long shot, but if you're using (or planning on using) SQL Server 2008 I'd recommend having a look at the new FileStream data type. FileStream solves most of the problems around storing the files in the DB: The Blobs are actually stored as files in a folder. The Blobs can be accessed using either a database connection or over the filesystem. Backups are integrated. Migration \\\"just works\\\". However SQL's \\\"Transparent Data Encryption\\\" does not encrypt FileStream objects, so if that is a consideration, you may be better off just storing them as varbinary. From the MSDN Article: Transact-SQL statements can insert, update, query, search, and back up FILESTREAM data. Win32 file system interfaces provide streaming access to the data. FILESTREAM uses the NT system cache for caching file data. This helps reduce any effect that FILESTREAM data might have on Database Engine performance. The SQL Server buffer pool is not used; therefore, this memory is available for query processing. \",\n      \"creationDate\": \"2008-08-06T20:15:31Z\",\n      \"questionId\": 3748,\n      \"type\": \"answer\",\n      \"user\": \"233\"\n    },\n    {\n      \"answerId\": 3548,\n      \"body\": \"If you're trying to prevent search engine bots from accessing certain pages, make sure you're using a properly formatted robots.txt file. Using HTTP_REFERER is unreliable because it is easily faked. Another option is to check the user agent string for known bots (this may require code modification). \",\n      \"creationDate\": \"2008-08-06T15:32:11Z\",\n      \"questionId\": 3486,\n      \"type\": \"answer\",\n      \"user\": \"357\"\n    },\n    {\n      \"answerId\": 1130,\n      \"body\": \"Why is it needed? When data is stored on disk based storage devices, it is stored as blocks of data. These blocks are accessed in their entirety, making them the atomic disk access operation. Disk blocks are structured in much the same way as linked lists; both contain a section for data, a pointer to the location of the next node (or block), and both need not be stored contiguously. Due to the fact that a number of records can only be sorted on one field, we can state that searching on a field that isn\u2019t sorted requires a Linear Search which requires N/2 block accesses (on average), where N is the number of blocks that the table spans. If that field is a non-key field (i.e. doesn\u2019t contain unique entries) then the entire table space must be searched at N block accesses. Whereas with a sorted field, a Binary Search may be used, this has log2 N block accesses. Also since the data is sorted given a non-key field, the rest of the table doesn\u2019t need to be searched for duplicate values, once a higher value is found. Thus the performance increase is substantial. What is indexing? Indexing is a way of sorting a number of records on multiple fields. Creating an index on a field in a table creates another data structure which holds the field value, and pointer to the record it relates to. This index structure is then sorted, allowing Binary Searches to be performed on it. The downside to indexing is that these indexes require additional space on the disk, since the indexes are stored together in a table using the MyISAM engine, this file can quickly reach the size limits of the underlying file system if many fields within the same table are indexed. How does it work? Firstly, let\u2019s outline a sample database table schema; Field name Data type Size on disk id (Primary key) Unsigned INT 4 bytes firstName Char(50) 50 bytes lastName Char(50) 50 bytes emailAddress Char(100) 100 bytes Note: char was used in place of varchar to allow for an accurate size on disk value. This sample database contains five million rows, and is unindexed. The performance of several queries will now be analyzed. These are a query using the id (a sorted key field) and one using the firstName (a non-key unsorted field). Example 1 - sorted vs unsorted fields Given our sample database of r = 5,000,000 records of a fixed size giving a record length of R = 204 bytes and they are stored in a table using the MyISAM engine which is using the default block size B = 1,024 bytes. The blocking factor of the table would be bfr = (B/R) = 1024/204 = 5 records per disk block. The total number of blocks required to hold the table is N = (r/bfr) = 5000000/5 = 1,000,000 blocks. A linear search on the id field would require an average of N/2 = 500,000 block accesses to find a value, given that the id field is a key field. But since the id field is also sorted, a binary search can be conducted requiring an average of log2 1000000 = 19.93 = 20 block accesses. Instantly we can see this is a drastic improvement. Now the firstName field is neither sorted nor a key field, so a binary search is impossible, nor are the values unique, and thus the table will require searching to the end for an exact N = 1,000,000 block accesses. It is this situation that indexing aims to correct. Given that an index record contains only the indexed field and a pointer to the original record, it stands to reason that it will be smaller than the multi-field record that it points to. So the index itself requires fewer disk blocks than the original table, which therefore requires fewer block accesses to iterate through. The schema for an index on the firstName field is outlined below; Field name Data type Size on disk firstName Char(50) 50 bytes (record pointer) Special 4 bytes Note: Pointers in MySQL are 2, 3, 4 or 5 bytes in length depending on the size of the table. Example 2 - indexing Given our sample database of r = 5,000,000 records with an index record length of R = 54 bytes and using the default block size B = 1,024 bytes. The blocking factor of the index would be bfr = (B/R) = 1024/54 = 18 records per disk block. The total number of blocks required to hold the index is N = (r/bfr) = 5000000/18 = 277,778 blocks. Now a search using the firstName field can utilise the index to increase performance. This allows for a binary search of the index with an average of log2 277778 = 18.08 = 19 block accesses. To find the address of the actual record, which requires a further block access to read, bringing the total to 19 + 1 = 20 block accesses, a far cry from the 1,000,000 block accesses required to find a firstName match in the non-indexed table. When should it be used? Given that creating an index requires additional disk space (277,778 blocks extra from the above example, a ~28% increase), and that too many indexes can cause issues arising from the file systems size limits, careful thought must be used to select the correct fields to index. Since indexes are only used to speed up the searching for a matching field within the records, it stands to reason that indexing fields used only for output would be simply a waste of disk space and processing time when doing an insert or delete operation, and thus should be avoided. Also given the nature of a binary search, the cardinality or uniqueness of the data is important. Indexing on a field with a cardinality of 2 would split the data in half, whereas a cardinality of 1,000 would return approximately 1,000 records. With such a low cardinality the effectiveness is reduced to a linear sort, and the query optimizer will avoid using the index if the cardinality is less than 30% of the record number, effectively making the index a waste of space. \",\n      \"creationDate\": \"2008-08-04T10:41:04Z\",\n      \"questionId\": 1108,\n      \"type\": \"answer\",\n      \"user\": \"264\"\n    }\n  ],\n  \"snippets\": null,\n  \"elapsed_time_micros\": 17143,\n  \"errors\": [],\n  \"aggregations\": null\n}\n"
}
