On Thu, Jun 3, 2010 at 2:51 PM, Rafael Sierra <[email protected]> wrote: > On Thu, Jun 3, 2010 at 2:40 PM, Massimiliano > <[email protected]> wrote: >> Dear Ikai, >> I want to search in the datastore "Pizza" and obtain "Pizza with tomatoes", >> "Pizza with Mushrooms", I don't care about "abcpizza" or "123pizza". > > Those you can obtain by the filter told some messages ago, but 'I want > pizza man!' need a full-text of the poor solution I gave in the last > message.
...OR* the poor solution... (not "of") > >> Massimiliano >> >> 2010/6/3 Ikai L (Google) <[email protected]> >>> >>> The reason search engines work is because they do stemming on terms. For >>> instance, when you search for "cats" you may want to match "cat" and "cats" >>> for better results, and it's fairly unlikely you want to return "abcatst" or >>> "youcats123" (sorry, I couldn't think of any words that had "cats" in the >>> middle). Lucene, an open source Java project for ships with basic analyzers >>> that will do things like this. >>> Otherwise, there aren't easily scalable ways to index on substrings. The >>> closest you can come is to try to intelligently determine which substrings >>> in a string can be searched on, and index those terms. >>> On Thu, Jun 3, 2010 at 9:49 AM, Rafael Sierra <[email protected]> >>> wrote: >>>> >>>> Massimiliano, the point is that there's no way to create an index that >>>> can be used to avoid a full-scan into the database in that kind of >>>> query, so, even if you can do "ILIKE '%anything%'" in PgSQL or "LIKE >>>> '%anotherthing%'" in MySQL, it will result in a full-scan on every >>>> record at database. >>>> >>>> But, if you have a small set of record in you database, you can do >>>> something like this: http://dpaste.com/hold/202782/ . You can do this >>>> in larger sets of databases also, but you may deal with some >>>> DeadLineErrors at your application. >>>> >>>> Note: This solution has absolutely no performance at all, you can even >>>> do some kind of pagination (scanning the database only up to N >>>> registers and breaking after that) but if the scan happens to iterate >>>> over thousands of records before reach N records found, you will still >>>> have DeadLineErrors. >>>> >>>> On Thu, Jun 3, 2010 at 11:04 AM, Massimiliano >>>> <[email protected]> wrote: >>>> > So there isn't a scalable solution! >>>> > >>>> > 2010/6/3 Geoffrey Spear <[email protected]> >>>> >> >>>> >> >>>> >> On Jun 3, 4:58 am, Massimiliano <[email protected]> >>>> >> wrote: >>>> >> > I need just something like *myvar* so I will accept any carachters >>>> >> > before >>>> >> > and after the var... >>>> >> > Or I have to divide the strings in list (each word an elment of the >>>> >> > list) >>>> >> > and use the operator IN. >>>> >> > Thinking >>>> >> >>>> >> Building a keyword index for each entity is fairly trivial. >>>> >> >>>> >> Indexing so that you can find "oob" in "foobar" isn't, and I don't >>>> >> believe there's a scalable solution for this. An RDBMS will do >>>> >> searches like this for you, but it won't scale well. I believe it's >>>> >> only possible by doing a table scan, which App Engine won't let you do >>>> >> (short of manually fetching every entity and checking if it contains >>>> >> your substring, which obviously isn't going to be pretty.) >>>> >> >>>> >> -- >>>> >> You received this message because you are subscribed to the Google >>>> >> Groups >>>> >> "Google App Engine" group. >>>> >> To post to this group, send email to >>>> >> [email protected]. >>>> >> To unsubscribe from this group, send email to >>>> >> [email protected]. >>>> >> For more options, visit this group at >>>> >> http://groups.google.com/group/google-appengine?hl=en. >>>> >> >>>> > >>>> > >>>> > >>>> > -- >>>> > >>>> > My email: [email protected] >>>> > My Google Wave: [email protected] >>>> > >>>> > -- >>>> > You received this message because you are subscribed to the Google >>>> > Groups >>>> > "Google App Engine" group. >>>> > To post to this group, send email to [email protected]. >>>> > To unsubscribe from this group, send email to >>>> > [email protected]. >>>> > For more options, visit this group at >>>> > http://groups.google.com/group/google-appengine?hl=en. >>>> > >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "Google App Engine" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]. >>>> For more options, visit this group at >>>> http://groups.google.com/group/google-appengine?hl=en. >>>> >>> >>> >>> >>> -- >>> Ikai Lan >>> Developer Programs Engineer, Google App Engine >>> Blog: http://googleappengine.blogspot.com >>> Twitter: http://twitter.com/app_engine >>> Reddit: http://www.reddit.com/r/appengine >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Google App Engine" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/google-appengine?hl=en. >> >> >> >> -- >> >> My email: [email protected] >> My Google Wave: [email protected] >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google App Engine" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/google-appengine?hl=en. >> > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
