You'll never be able to have a wildcard on the front side of your pattern with couchdb directly, and you'll only be able to have a wild card on one end of the statement.
Something you could try: emit(doc.field_to_search, value); emit(string_reverse_function(doc.field_to_search), vaule); Then you could do something like: http://127.0.0.1:5984/db_name/_view/ddoc/using_like?startkey="foo"&endkey="foo\u9999" http://127.0.0.1:5984/db_name/_view/ddoc/using_like?startkey="oof"&endkey="oof\u9999" And then intersect the two sets client side. Other than that, I'd look at integrating full text search. HTH, Paul Davis On Thu, Jan 22, 2009 at 11:56 AM, Brian Candler <[email protected]> wrote: > Suppose I have a view which indexes a single field. Using startkey and > endkey, it's easy to find matches which start with a particular pattern. > > But I'm wondering how best to do substring matches (in SQL: LIKE '%foo%') > > I could: > > 1. Read the entire view, and filter it client-side (problem: large > data transfer) > > 2. Create another view which enumerates all possible suffixes (problem: > large index, O(N^2)) > > somedata > omedata > medata > edata > data > ata > ta > a > > 3. Create a temporary view for the exact search being done (problem: forces > a read through all documents in the database) > > Is there some other option I have overlooked, such as filtering the view > server-side somehow? > > Thanks, > > Brian. >
