Hi all, The suggestions with parenthesis and boolean values make the SQL harder to read than needed (I can imagine having to check the documentation to determine what *CONTAINSTEXT(true, true)* is doing).
When using a fulltext index it's a bit odd that a given string (e.g "graph databases") that was present on the original property text isn't found when looking it up with containsText. The user will have to remember that it's not found becase it was "exploded" before being added to the index with the configured separatorChars. I think we should change the containsText operator to work like the matchText operator suggested by Enrico: parsing & match all words. The other use case: parsing and matching any of the words could be served by a distinct operator containsTextAny. This would make the operators pretty straightforward to use. What do you guys think? Cheers, Davide On Thursday, April 17, 2014 11:43:36 AM UTC+1, Riccardo Tasso wrote: > > It sounds a bit strange having an operator with parameters, what do you > think of something more like a predicate: > > where CONTAINSTEXT(props, true, true, "graph database") > > Thanks, > Riccardo > > > 2014-04-17 12:33 GMT+02:00 Luca Garulli <[email protected] <javascript:>>: > >> >> On 17 April 2014 11:33, Enrico Risa <[email protected] <javascript:>>wrote: >> >>> Let's recap the behavior first :D >>> >>> >>> *select from Class where props CONTAINSTEXT(false, false ) "graph >>> database" * >>> >>> its like default ( select from Class where props CONTAINSTEXT "graph >>> database") >>> >> >> Yes >> >> >>> >>> *select from Class where props CONTAINSTEXT(true, false ) "graph >>> database" * >>> >>> ? >>> >> >> In this case is like the query above, but not you could do: >> >> *select from Class where props CONTAINSTEXT(true, false ) ["graph", >> "database"]* >> >> End the result would be different: all the instances with both graph and >> database words. May you add the support for collections like you already >> did with Spatial, please? >> >> *select from Class where props CONTAINSTEXT(false, true ) "graph >>> database"* >>> >>> parse according the index configuration and looks for each words and >>> return the records >>> that al least contains one word >>> >> >> Yes >> >>> >>> >>> *select from Class where props CONTAINSTEXT(true, true ) "graph >>> database" * >>> >>> parse according the index configuration and looks for each words and >>> return the records >>> that contains all the words parsed >>> >> >> Yes >> >> >>> >>> >>> >>> 2014-04-17 11:19 GMT+02:00 Luca Garulli <[email protected] <javascript:> >>> >: >>> >>> So by default works like now. @Enrico, could you open an issue on that? >>>> >>>> Lvc@ >>>> >>>> >>>> On 17 April 2014 11:04, Enrico Risa <[email protected] >>>> <javascript:>>wrote: >>>> >>>>> Sounds good to me >>>>> >>>>> >>>>> 2014-04-17 10:47 GMT+02:00 Luca Garulli <[email protected]<javascript:> >>>>> >: >>>>> >>>>> Hi, >>>>>> actually also operators can get parameters, so we could write >>>>>> something: >>>>>> >>>>>> select from Class where props CONTAINSTEXT( <all>, <parseValue> ) "graph >>>>>> database" >>>>>> >>>>>> Where: >>>>>> - all, is a boolean to specify if we want all words matched >>>>>> - parseValue, is a boolean to tell to parse the value or using it as >>>>>> is >>>>>> >>>>>> Is it ugly? >>>>>> >>>>>> Lvc@ >>>>>> >>>>>> >>>>>> >>>>>> On 17 April 2014 10:39, Enrico Risa <[email protected] <javascript:> >>>>>> > wrote: >>>>>> >>>>>>> I would leave the containsText as is now >>>>>>> but now if you use containsText "graph databases" the operator >>>>>>> looks for the entire string in the index. >>>>>>> >>>>>>> I could do one operator that take the string "graph databases" split >>>>>>> according >>>>>>> the fulltext index configuration and looks for the single string in >>>>>>> the index. >>>>>>> >>>>>>> something like this >>>>>>> >>>>>>> select from Class where props matchText "graph database" >>>>>>> >>>>>>> and looks from "graph" and "database" in the index >>>>>>> >>>>>>> Would be good to support like a boolean that says if you are looking >>>>>>> for all or at least one >>>>>>> So with one operator we have cover both use cases >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2014-04-16 22:41 GMT+02:00 Luca Garulli <[email protected]<javascript:> >>>>>>> >: >>>>>>> >>>>>>> +1. I would leave containsText as just one and containsTextAll for >>>>>>>> all the words. Something like contains and containsAll. >>>>>>>> >>>>>>>> @Enrico, since you already contributed a lot on this, WDYT? >>>>>>>> >>>>>>>> Lvc@ >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 16 April 2014 13:50, Riccardo Tasso >>>>>>>> <[email protected]<javascript:> >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> Thanks Enrico, >>>>>>>>> it would be nice if the containsText operator could be used in >>>>>>>>> conjunction with an array of strings, something like: >>>>>>>>> WHERE label containsTextAll ["graph", "databases"] >>>>>>>>> WHERE label containsTextOneOf ["graph", "databases"] >>>>>>>>> >>>>>>>>> Riccardo >>>>>>>>> >>>>>>>>> >>>>>>>>> 2014-04-16 13:42 GMT+02:00 Enrico Risa >>>>>>>>> <[email protected]<javascript:> >>>>>>>>> >: >>>>>>>>> >>>>>>>>> Hi Riccardo, >>>>>>>>>> >>>>>>>>>> you could try this query >>>>>>>>>> >>>>>>>>>> select from Class where property containsText "graph" OR name >>>>>>>>>> containsText "database" >>>>>>>>>> >>>>>>>>>> With 1.7 snapshot you could also index the prefix of a word >>>>>>>>>> https://github.com/orientechnologies/orientdb/wiki/FullTextIndex >>>>>>>>>> >>>>>>>>>> I think there isn't an operator that does the split and search >>>>>>>>>> each word >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 2014-04-16 12:24 GMT+02:00 Riccardo Tasso >>>>>>>>>> <[email protected]<javascript:> >>>>>>>>>> >: >>>>>>>>>> >>>>>>>>>> Hi all, >>>>>>>>>>> let's say I have the following query: "graph databases" and I >>>>>>>>>>> want to search for all the vertices with a label which contains at >>>>>>>>>>> least >>>>>>>>>>> one of the terms "graph" OR "database". This means that all the >>>>>>>>>>> following >>>>>>>>>>> labels are good: "I love graph databases", "I love databases", "I >>>>>>>>>>> have a >>>>>>>>>>> graph". >>>>>>>>>>> >>>>>>>>>>> Is it possible to use a OrientDB full-text index to perform this >>>>>>>>>>> query? How? >>>>>>>>>>> >>>>>>>>>>> Cheers, >>>>>>>>>>> Riccardo >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> >>>>>>>>>>> --- >>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>> Google Groups "OrientDB" group. >>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>> it, send an email to [email protected]<javascript:> >>>>>>>>>>> . >>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>>> --- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "OrientDB" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to [email protected] <javascript:>. >>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> >>>>>>>>> --- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "OrientDB" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to [email protected] <javascript:>. >>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "OrientDB" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to [email protected] <javascript:>. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "OrientDB" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to [email protected] <javascript:>. >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "OrientDB" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected] <javascript:>. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>>> >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "OrientDB" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected] <javascript:>. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>>> >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "OrientDB" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected] <javascript:>. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "OrientDB" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected] <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> >> --- >> You received this message because you are subscribed to the Google Groups >> "OrientDB" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
