couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Davis <>
Subject Re: Newbie question: substring matching
Date Thu, 22 Jan 2009 17:08:39 GMT
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:"foo"&endkey="foo\u9999""oof"&endkey="oof\u9999"

And then intersect the two sets client side. Other than that, I'd look
at integrating full text search.

Paul Davis

On Thu, Jan 22, 2009 at 11:56 AM, Brian Candler <> 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.

View raw message