Wildcards in CTXCAT grammar vs. CONTEXT grammar

I've got a question about using wildcards in the CONTEXT grammar, when working with a catalog (CTXCAT index). For the application in question, the simpler CTXCAT grammar is almost exactly what I need, but there are a few circumstances in which I want to be able to take advantage of the flexibility of the CONTEXT grammar. I am able to do that using a query template, but when the query in question includes wildcards, I sometimes see behavior that I do not understand. Here's a query that works perfectly when expressed in the CTXCAT grammar:
SELECT count(*)
FROM ItemKeywordSearch iks
WHERE CATSEARCH(iks.ItemKeywords, '403(b)*', null) > 0;
When I try to restate that same query using the CONTEXT grammar like this:
SELECT count(*)
FROM ItemKeywordSearch iks
WHERE CATSEARCH(iks.ItemKeywords, '<query><textquery grammar="CONTEXT">403(b)%</textquery></query>', null) > 0;
I get a "DRG-51030: wildcard query expansion resulted in too many terms" error. I'm guessing the issue is related to some interaction between the parentheses characters and the wildcard; I don't see the same error if I remove the parentheses from the query.
Can anyone help me understand the cause of this issue, and suggest a way I can resolve or work around it?
Thanks,
Tim

I don't know what preference attributes you have set. If you want to search for parentheses, then you should set them as printjoins within a lexer so that they are indexed and you will also need to escape them by placing a \ before each one, so that they are not treated as special characters. You can also set the wildcard_maxterms to the maximum value for your verision in a wordlist. The two queries that use the different grammar may be viewing the search string differently. If one ignores the parentheses tries to search for b% or everything that starts with b then that would expand to a lot of terms very quickly and would cause the error. You can query the dr$token column of your dr$...$i domain index table to see how your data has been tokenized during indexing. Please see the demonstration below.
SCOTT@orcl_11g> CREATE TABLE ItemKeywordSearch
  2    (ItemKeywords  VARCHAR2 (20))
  3  /
Table created.
SCOTT@orcl_11g> INSERT ALL
  2  INTO ItemKeywordSearch VALUES ('403(b)')
  3  INTO ItemKeywordSearch VALUES ('403(b)A')
  4  INTO ItemKeywordSearch VALUES ('403(b)B')
  5  INTO ItemKeywordSearch VALUES ('403(b)C')
  6  INTO ItemKeywordSearch VALUES ('other')
  7  SELECT * FROM DUAL
  8  /
5 rows created.
SCOTT@orcl_11g> BEGIN
  2    CTX_DDL.CREATE_PREFERENCE ('your_lexer', 'BASIC_LEXER');
  3    CTX_DDL.SET_ATTRIBUTE ('your_lexer', 'PRINTJOINS', '()');
  4    --
  5    CTX_DDL.CREATE_PREFERENCE ('your_wordlist', 'BASIC_WORDLIST');
  6    CTX_DDL.SET_ATTRIBUTE ('your_wordlist', 'WILDCARD_MAXTERMS', '50000');
  7  END;
  8  /
PL/SQL procedure successfully completed.
SCOTT@orcl_11g> CREATE INDEX iks_idx
  2  ON ItemKeywordSearch (ItemKeywords)
  3  INDEXTYPE IS CTXSYS.CTXCAT
  4  PARAMETERS
  5    ('LEXER        your_lexer
  6        WORDLIST  your_wordlist')
  7  /
Index created.
SCOTT@orcl_11g> SELECT dr$token FROM dr$iks_idx$i
  2  /
DR$TOKEN
403(B)
403(B)A
403(B)B
403(B)C
OTHER
SCOTT@orcl_11g> SELECT count(*)
  2  FROM   ItemKeywordSearch iks
  3  WHERE  CATSEARCH
  4             (iks.ItemKeywords,
  5              '403\(b\)*',
  6              null) > 0
  7  /
  COUNT(*)
         4
SCOTT@orcl_11g> SELECT count(*)
  2  FROM   ItemKeywordSearch iks
  3  WHERE  CATSEARCH
  4             (iks.ItemKeywords,
  5              '<query>
  6              <textquery grammar="CONTEXT">403\(b\)%
  7              </textquery>
  8            </query>',
  9            null) > 0
10  /
  COUNT(*)
         4
SCOTT@orcl_11g>

Similar Messages

  • Difference between catsearch(ctxcat) and contains(context)

    I am referring
    http://docs.oracle.com/cd/B28359_01/text.111/b28303/ind.htm
    http://www.oracle.com/technetwork/database/enterprise-edition/ctxcat-primer-090555.html
    both give details about oracle text
    the question that remains is when not to use catsearch
    yes it is answered in the second document already but if you can provide a little more definitive answer to
    when not to use catsearch or "what are the other reasons not to use catsearch" I am sure it will dis-spell many doubts of many
    thank you very much
    (I have not mentioned my db version here, please write about the latest-11g, most have 11g )
    Edited by: 946207 on Dec 26, 2012 1:28 PM

    [url http://lmgtfy.com/?q=the+ctxcat+index+type+what+is+it%3F%3F]try this one
    [url https://www.google.co.in/search?q=when+not+to+use+ctxcat&oq=when+not+to+use+ctxcat&sugexp=chrome,mod=13&sourceid=chrome&ie=UTF-8#hl=en&tbo=d&sclient=psy-ab&q=the+ctxcat+index+type+what+is+it%3F%3F&oq=the+ctxcat+index+type+what+is+it%3F%3F&gs_l=serp.3...7752.19481.0.19760.55.43.0.0.0.5.440.7021.0j31j6j2j1.40.0.les%3B..0.0...1c.1.50RYIaFEls8&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&bvm=bv.1355534169,d.bmk&fp=abe7578b7545eafb&bpcl=40096503&biw=1422&bih=727]and this one
    click the first page that it shows, one of them should work for you, no condescension intended
    it is written by Roger Ford
    [url http://lmgtfy.com/?q=the+ctxcat+index+type+what+is+it%3F%3F&l=1]try this also
    Edited by: 946207 on Dec 27, 2012 10:17 AM

  • Use CONTEXT index on mview or use mview's rewrite directly

    Please let me explain what I mean in Subject. I have 9 tables. Each of these tables has about 40,000 rows and one table has 2 million rows. Using first approach, I can build a join-only materialized view on top of nine table's mview log. then query on these nine tables directly. Advantage for doing that is use rewrite.
    <p>
    for second approach, I build a CONETXT index on several columns on the mview, and then query through CONTEXT index on mview directly. This is pretty much like Barbara did on CREATE INDEX book_idx ON book_search
    [http]Indexing multiple columns of multiple tables using CTXCAT
    but she used CTXCAT instead of CONTEXT index.
    <p>
    My question is will second approach better than first one and why. Unlike basic join several tables which gives you predictable performance, I often feel that CONTEXT index performance is unpredictable when tables have more than several thousands rows (maybe I did something wrong, but still looking for document regarding performance) .
    <p>
    I will appreciate someone could show hints on the issue.
    <p>
    Message was edited by:
    qwe15933
    Message was edited by:
    qwe15933
    Message was edited by:
    qwe15933
    Message was edited by:
    qwe15933

    The best method to find out what is best for any individual situation is to test and compare. In general, Oracle Text is best at searching unstructured data, such as large documents and has a lot of features that enable you to do different kinds of searches. If you only have structured data, with each column only containing one short thing and you only need simple searches, then you probably don't need Text. There are also a few things that can be done to indexes and/or queries to optimize performance. It would help to have an idea what your typical data is like and what sorts of searches you anticipate needing.

  • Checking text query validity without actually running the query: ideas?

    Hi,
    I would like to implement a sort of function that does a preliminary check on the validity of the search string and ideally this function should work with both CTXCAT and CONTEXT indexes (and grammars).
    Initially I thought that CTXQUERY.EXPLAIN function could do this for me, but, unless I am missing something, it only works with CONTEXT indexes and it doesn't accept a string containing a text query rewrite using CTXCAT grammar (it throws DRG-11119: operation is not supported by this index type).
    Plan B would be to create an empty table with a CONTEXT index and then run the query either with the CONTEXT grammar or the CTXCAT grammar via query rewrite and if the query runs, returning no rows, presumably fast enough for this purpose, then the query string is assumed to be valid.
    What I don't like much about plan B is the need for an additional table plus the "dummy" context indexes just to perform the parsing of the text query, but so far I didn't come up with more brilliant ideas.
    Any thoughts?
    Am I missing something that does the magic without hassle?
    Thanks
    Flavio

    Under normal circumstances I wouldn't do this, as you say I'd just run the query and catch the error, but I need to do this inside a report refresh performed via AJAX (using Oracle Apex) and the catch is that when such refresh fails owing to a syntax error, the partial refresh mechanism of APEX becomes broken, so even if you amend the query and submit a new valid string, it won't show up any more.
    That's why I need to be sure that the string is valid before running the query, hence the syntax checking function.
    The google-style parser sounds interesting, may be I can try to implement it in a future release of my app!
    Thanks
    Flavio

  • Need Help Getting A Context Free Grammar Generator Working

    Hello,
    This is my first real programming excercise in a college programming class. I am trying to make a context free grammar generator. I keep getting this error:
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
    ex out of range: 2
    at java.lang.String.substring(String.java:1500)
    at Generator.FindCat(Generator.java:48)
    at Generator.Generate_Sentence(Generator.java:28)
    at Generator.main(Generator.java:16)
    I'm not even sure what its trying to tell me. If anyone could take a few minutes to look at it and give me some help I'd appreciate it.
    Thanks,
    Mark
    [email protected]
    import java.util.Random;
    public class Generator{
    //Generate 10 Sentences
    public static void main(String[] args) {
    for (int a=0; a<10; a++){
    System.out.println(Generate_Sentence("S"));
    //Expand Categories
    public static String Generate_Sentence(String category){
    int startleft=0;
    while (HasCategory(category)==0) {
    startleft=LeftIndex(category);
    category=FindCat(category,startleft);
    return category;
    // Find Complete Category and Separate
    public static String FindCat(String category, int start){
    String nextLetter="", cat="";
    String left="", right="";
    int endCat=0;
    while ((!(nextLetter.equals(""))) || (!(nextLetter.equals(" ")))){
    int z=start;
    String orig = category.substring(z,z+1) ;
    String folded = orig.toUpperCase() ;
    if (orig.equals(folded))
    cat=cat+orig;
    z++;
    nextLetter=category.substring(z,z+1);
    endCat=z;
    for (int r=0; r<start; r++){
    left=left+category.substring(r,r+1);
    for (int s=endCat; s<category.length(); s++){
    right=right+category.substring(s,s+1);
    String tempString = left+Select_Expansion(category)+right;
    return tempString;
    // Find Left Index
    public static int LeftIndex(String category){
    int e=-1;
    boolean bol=false;
    while (!bol){
    e++;
    String orig = category.substring(e,e+1) ;
    String folded = orig.toUpperCase() ;
    // If folding up had no effect original must have been uppercase:
    if (orig.equals(folded))
    bol=true;
    return e;
    // Check for Category 0=yes - 1=no -- WORKS FINE
    public static int HasCategory(String Input) {
    String original, folded_up ;
    boolean b=false;
    // Check each character:
    for (int j = 0 ; j < Input.length() ; j++) {
    // Extract single character and fold it to uppercase:
    original = Input.substring(j,j+1) ;
    folded_up = original.toUpperCase() ;
    // If folding up had no effect original must have been uppercase:
    if (original.equals(folded_up)){
    b=true;
    if (b)
    return 0;
    else
    return 1;
    // Select_Expansion(category) will randomly expand Category according
    // to the following grammar.
    static String[] Grammar= {
    "S -> NAME VP",
    "VP -> V NP",
    "NP -> ART NN",
    "NN -> ADJ NN",
    "NN -> N",
    "ART -> a",
    "V -> is",
    "V -> looks like",
    "V -> acts like",
    "NAME -> dr aronis",
    "NAME -> mr aronis",
    "NAME -> john",
    "ADJ -> nice",
    "ADJ -> mean",
    "ADJ -> smart",
    "ADJ -> stupid",
    "ADJ -> hip",
    "ADJ -> geeky",
    "ADJ -> normal",
    "ADJ -> strange",
    "ADJ -> great",
    "ADJ -> terrible",
    "N -> person",
    "N -> teacher",
    "N -> fool",
    "N -> tool",
    static Random generator = new Random();
    public static String Select_Expansion(String Category) {
    // Variables:
    String This_Rule = "", Rule_LHS="", Rule_RHS="";
    int Number_of_Expansions=0, Expansion_to_Use=0;
    // Count expansions for Category:
    for (int n=0 ; n<Grammar.length ; n++) {
    This_Rule=Grammar[n];
    Rule_LHS = This_Rule.substring(0,This_Rule.indexOf(" ->"));
    if (Rule_LHS.equals(Category)) Number_of_Expansions++;
    // return error if no expansions:
    if (Number_of_Expansions == 0) return "error";
    //Randomly select which expansion to use:
    Expansion_to_Use = Math.abs(generator.nextInt() % Number_of_Expansions);
    //Go through rules while counting down through expansions of Category,
    // and break with selected expansion:
    for (int n=0; n<Grammar.length; n++) {
    This_Rule=Grammar[n];
    Rule_LHS = This_Rule.substring(0,This_Rule.indexOf(" -> "));
    Rule_RHS = This_Rule.substring(This_Rule.indexOf(" -> ") + 4);
    if (Rule_LHS.equals(Category) && (Expansion_to_Use ==0)) break;
    if (Rule_LHS.equals(Category)) Expansion_to_Use--;
    return Rule_RHS;

    In general terms, any of your loops over a string should contain a test to make sure you are still within the bounds of the string. I noticed that several methods have the potential to throw exceptions like the one you saw.
    You will also need (want?) to deal with the case that the string is not found - getting the substring(-1, 0) will throw an exception, too.
    If you are dealing with single characters of strings, you may prefer to use the charAt(pos) method rather than substring(pos, pos+1), since comparing a character is faster (and simpler, IMHO) than comparing strings of length 1.
    I also noticed, in particular, in your FindCat method, the following loopwhile ((!(nextLetter.equals(""))) || (!(nextLetter.equals(" ")))){
        int z=start;
        String orig = category.substring(z,z+1) ;
        String folded = orig.toUpperCase() ;
        if (orig.equals(folded))
            cat=cat+orig;
        z++;
        nextLetter=category.substring(z,z+1);
        endCat=z;
    }You may want to move the line 'int z = start;' outside the loop, otherwise you may experience infinite looping, since you are constantly incrementing then resetting the value of z.
    A common implementation technique is incremental implementation. That is, to code a single method, then test to make sure that method works as expected before moving on to the next method. This reduces the code that you will have to search for any errors when they do occur, although stack traces (as you have shown) can help in determining where an error occurs.
    One final comment, a matter of style... it's considered a convention in Java to name methods and variables starting with a lowercase letter... thus 'public static String findCat' rather than 'public static String FindCat', and 'numberOfExpansions' rather than 'Number_of_Expansions'... once you get used to it, you can easily differentiate between return types, method calls, method and variable declarations and other statements. Nothing forcing you though :-)
    Otherwise, it looks like you have a grasp on the language, and you understand the problem... it's just a couple of standard 'tricks' that are holding you back... which come with practice.
    Good luck with your exercise!
    -Troy

  • Question on optimum choice of index - whether to use CTXCAT or CONTEXT

    Hi ,
    I have a situation in which there are short texts that are to be searched for diacritical characters and for that I implemented CTXCAT type of index. The solution works fine except for left side wild card search - in that case I have suggested the developers to use the query template feature. -this is the background information for the question I have and following example demonstrates it:
    CREATE TABLE TEST_USER
      FIRST_NAME  VARCHAR2(64 CHAR)                 NOT NULL,
      LAST_NAME   VARCHAR2(64 CHAR)                 NOT NULL
    CREATE INDEX TEST_USER_IDX3 ON TEST_USER
    (FIRST_NAME)
    INDEXTYPE IS CTXSYS.CTXCAT
    PARAMETERS('LEXER cust_lexer');
    CREATE INDEX TEST_USER_IDX4 ON TEST_USER
    (LAST_NAME)
    INDEXTYPE IS CTXSYS.CTXCAT
    PARAMETERS('LEXER cust_lexer');
    Don't worry about the cust_lexer, it is for diacritical search and it is not relevant to this question so I am not copying the code for the preference I created etc.
    Now I have a row of data in the table with first_name column as Supervisor. If I run the below sql, it gives output:
    SELECT *
      FROM test_user
    WHERE catsearch (first_name, 'Supervisor', NULL) > 0;
    FIRST_NAME                     LAST_NAME
    Supervisor                     upervisor
    --even the below sql with wild card (*) at the end works fine...
    SQL> SELECT *
      2    FROM test_user
      3   WHERE catsearch (first_name, 'Super*', NULL) > 0;
    FIRST_NAME                     LAST_NAME
    Supervisor                     upervisor
    However the below sql queries doesn't give any output, though they should return the same row as above!
    SQL> SELECT *
      2    FROM test_user
      3   WHERE catsearch (first_name, '*visor', NULL) > 0;
    no rows selected
    SQL> SELECT *
      2    FROM test_user
      3   WHERE catsearch (first_name, '*vis*', NULL) > 0;
    no rows selected
    --Using query template as below solves the issue:
    select * from test_user
    where catsearch(first_name,
    '<query>
      <textquery grammar="context">
         %viso%
      </textquery>
    </query>','')>0
    FIRST_NAME                     LAST_NAME
    Supervisor                     upervisor
    Note that I verified the query execution plan and it uses the index and there is no Full Table Scan:
    | Id  | Operation                   | Name           | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT            |                |       |       |     9 (100)|          |
    |   1 |  TABLE ACCESS BY INDEX ROWID| TEST_USER      |   376 |    99K|     9   (0)| 00:00:01 |
    |*  2 |   DOMAIN INDEX              | TEST_USER_IDX3 |       |       |            |          |
    ---------------------------------------------------------------------------------------------- Up to the above , all details were by way of the back ground...now the question is - it is this the right choice? I am using context grammer using query template. There is another thread on this forum where an expert (Barbara) said that
    ". It should be better to use a context index than a ctxcat index with a query template that uses context grammar. " -this was said on this question link: Re: Wildcard Search
    So I am getting this doubt. However I have good data here that shows that the query doesn't do full table scan - still is it a bad choice? Note that there are several issues with CONTENT type of indexes( as per my limited understanding) - because they are not transactional in nature and so we have to take extra steps/measures to have the indexes updated which seems like a major pain area to me.
    My doubt is , did I do the right thing by using query template or should I use the CONTEXT type of index instead of CTXCAT type of index?
    Thanks,
    Nirav
    Edited by: orausern on Jan 17, 2013 1:40 AM
    Edited by: orausern on Jan 17, 2013 1:43 AM

    I would just like to add a few comments.
    Alhough it is documented that the ctxcxat index and catsearch do not support a wildcard in front of the term, a workaround is to use two asterisks on the left side of the term, as demonstrated below. I provide this only for clarification and interesting trivia. I would still use a context index for various reasons.
    SCOTT@orcl_11gR2> CREATE TABLE TEST_USER
      2    (FIRST_NAME  VARCHAR2(64 CHAR))
      3  /
    Table created.
    SCOTT@orcl_11gR2> INSERT INTO test_user VALUES ('Supervisor')
      2  /
    1 row created.
    SCOTT@orcl_11gR2> CREATE INDEX TEST_USER_IDX
      2  ON TEST_USER (FIRST_NAME)
      3  INDEXTYPE IS CTXSYS.CTXCAT
      4  /
    Index created.
    SCOTT@orcl_11gR2> SET AUTOTRACE ON EXPLAIN
    SCOTT@orcl_11gR2> SELECT * FROM test_user
      2  WHERE  catsearch (first_name, '**vis*', NULL) > 0
      3  /
    FIRST_NAME
    Supervisor
    1 row selected.
    Execution Plan
    Plan hash value: 4046491764
    | Id  | Operation                   | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT            |               |     1 |   142 |     3   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| TEST_USER     |     1 |   142 |     3   (0)| 00:00:01 |
    |*  2 |   DOMAIN INDEX              | TEST_USER_IDX |       |       |            |          |
    Predicate Information (identified by operation id):
       2 - access("CTXSYS"."CATSEARCH"("FIRST_NAME",'**vis*',NULL)>0)
    Note
       - dynamic sampling used for this statement (level=2)
    SCOTT@orcl_11gR2>The only time that I am aware of that there is a conflict between a wordlist and a lexer is when you specify stemming in both. If you are using stemming, you can still use both a wordlist and a lexer, but only set the stemmer attribute in the wordlist, not the index_stems attribute in the lexer.

  • ParticalTrigger grammar mistake

    [2009-12-04T17:38:47.601+08:00] [AdminServer] [WARNING] [] [org.apache.myfaces.trinidadinternal.context.RequestContextImpl] [tid: [ACTIVE].ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: anonymous] [ecid: 0000ILP3^t32jKYzLoYROA1B68C70002ku,0] [APP: jtgcear2713g] RichTable[org.apache.myfaces.trinidad.component.UIXTable$RowKeyFacesBeanWrapper@3802125e, id=t1]
    cannot find grammar to support the particalTriggers. ::cb1. Grammar is in old version.
    [2009-12-04T17:38:58.380+08:00] [AdminServer] [WARNING] [ADF_FACES-30124] [oracle.adfinternal.view.faces.renderkit.rich.FormRenderer] [tid: [ACTIVE].ExecuteThread: '27' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: anonymous] [ecid: 0000ILP3bXV2jKYzLoYROA1B68C70002l7,0] [APP: jtgcear2713g] [arg: /page/cadastremgmt/Djgl_Recipient-portal.jspx] viewId /page/cadastremgmt/Djgl_Recipient-portal.jspx

    YE,
    well, you know what I'm going to say, but I'll say it anyway..
    posting stack traces, log files, etc without any context nor any question.... what do you want from the forum?
    John

  • Grammar Check is Overzealous About Gender

    I am a writer by profession and dumped Word for Pages at the beginning of this year.  I'm a happy user, but certain grammar suggestions are just annoying.  Marking the word 'husband' or 'wife' as being too gender specific, in a context where it's necessary to be specific is one pet peeve.  It would be nice if one could permanently ignore certain suggestions, or just disable certain parts of the grammar check.

    You have to tell Apple. We who respond here are only end users like you and can't change a thing.
    http://www.apple.com/feedback/pages.html

  • CONTEXT index vs a CTXCAT index

    I'm puzzled as to which of these indexes is meant for what purpose. I like the auto-update feature of the CTXCAT index, so I'm leaning that direction.
    Here's our situation. We have a table with about 2 million rows, where there's an EMPLOYER_NAME field. Users are constantly executing queries like:
    where EMPLOYER_NAME like '%CHEVRON%'The CTXCAT index is also described as "Typically, with this index type, you index small documents or text fragments". I would consider this EMPLOYER_NAME column (VARCHAR2(50)) to fit this description, more or less.
    The main thing that has me confused is that our vendor is pushing for a CONTEXT index, as they've got experience setting these up. We're not storing "text consists of large coherent documents.", but we are storing plain text.
    Could someone offer some guidance? Thanks for your help,
    --=Chuck

    Depends on whether the words are predictable. You indicated in your first post they are employer names. If they are then presumably there is a table/list of valid values. Otherwise a CTX index may be your best shot but understand that you will be indexing every word and, I assume, most will be irrelevant.

  • How can I get Apple to pay attention to improving spell check and grammar?

    I love this company and the products they develop.   I am embarrassed at the number of Apple products that I have at this point.  However, I have to say that the spelling and grammar check on Mac Mail is awful.  I am a terrible speller, and am constantly forced to go to Google to find the correct spelling of a word that seems to totally confuse Apple spell check.  But here is the thing, you often need only have one letter missing or incorrect for Mac's spell check to show no results. 
    For example: cannibalize.   Try spelling it with one "n" and the spell check will show NO results.  Use two N's correctly, but replace the "i" with an "a" and again it is completely useless.  Obviously, this is ridiculous.  What good is a spell check that get's confused if you are one letter off of the correct spelling?  There are thousands of these examples, and sadly, I seem to find them all. 
    Moreover, when it does have suggestions, they are in a ridiculous order as well.   If it suggest 5 or six words, it generally seems to suggest extremely long tail (rare) words first, and the have the most commonly used words listed last (or again, not at all).  
    Grammar is similarly awful.   It is the ONE area as far as I am concerned that is clearly better on Windows and Google Apps, and yet seems so basic these days.  It's been around for 20 years for goodness sake. 
    I bring this up in the hopes that a truly motivated developer will fix core functionality.   In the meantime any tips for me (besides snarky advice about learning to spell).
    Rick

    I totally agree with you, I as well, cannot compose any complex messages in Mail, however I'm am stuck using a browser extension like "Gramercy" to assist me! Maybe after many replies Apple will address the issue

  • I lost spelling and grammar check on my word after upgrading to yosemite

    I lost spelling and grammar check on my word after upgrading to yosemite

    Also search/ask in the forums run by the people who make that app.  Word does not use any Apple spelling or grammar stuff.
    http://answers.microsoft.com/en-us/mac/forum/macword

  • Office 2013 removed grammar & writing style options for Portuguese (Brazil) language

    The pt-br (Portuguese - Brazil) proofing tools for Office 2010 included many grammar options but apparently these have been removed in Office 2013. Pt-pt (Portuguese - Portugal) still retains these options for some reason. I asked about this issue on the
    Microsoft Community forum and the forum moderator confirmed that the Brazilian Portuguese Office 2013 spell checker does indeed lack these features.
    I know that the pt-br proofing tools was designed by Itautec Brazil. So I contacted the project leader and she answered me as follows:
    " Someone from Itautec contacted Microsoft and they answered: “Microsoft has now replaced all of the above features with our own versions - we do not intend to ship the Itautec features with any new Microsoft product.”"
    I would like use Office 2013, but I cannot work without a robust Brazilian Portuguese spell checker. Is using Office 2010 my only option?

    Hi,
    You can go to this page and click Download button to download Microsoft Office Proofing Tools 2013 - Portuguese (Brazil):
    http://www.microsoft.com/pt-BR/download/details.aspx?id=35400
    The current tool might be not powerful enough for you, you can always submit your feedback/requirement by clicking the smile face at the upper right corner of Office applications. Microsoft will work hard to make sure it is reviewed:
    http://blogs.office.com/2012/08/03/got-feedback-send-a-smile-or-a-frown/
    Please be assured that Microsoft product team will strive to capture Microsoft users' ideas and are working hard to create a more powerful and easy-to-use product.
    Thanks,
    Ethan Hua CHN
    TechNet Community Support

  • Office 2013 refuse to show rich Grammar options in just ONE language

    The bottom line is that Office 2013 Professional Click to Run allows me to use full “Grammar” and “Grammar and Style” features on ALL languages but Portuguese.
    I use both English and Portuguese. Word allows me to check lots of stuff in English, but it
    only allows three things in Portuguese
    (Capitalization, Punctuation, and Spacing) and do not display the “Grammar and Style”  option.
    I´ve tried to use Spanish and French and both show full options like in English.
    I´ve tried almost everything I could think of, including uninstall everything, install the Office 2013 Professional in Spanish and install both Office LangPack2013_EN_x86 and OfficeLangPack2013_Brazilian_x86.
    It did not work. I´ve also already upgraded to Windows 8.1.
    One thing you must know is that, by mistake I´ve choose Portuguese to Windows 8 single language installation option. When I´ve realized this, I´ve reset to factory default and
    choose English. I am wondering if this initial misstep did not left some language problem on the operational system level.

    Hi JRBMendes.
    I had the very same problem as reported by you. What I did was just place the Office 2013 CD in the DVD driver and click install. In the option field, click "Repair" or "Reparar" if you are using the Portuguese version. After finishing repairing, it will
    ask you to reboot the system in order to complete the repair. Bingo. Worked just fine and you have style and grammar option back again. 
    Abraços, 
    Carlos Gagliardi

  • Org.xml.sax.SAXException: Error:General Schema Error: Grammar

    I am getting the error below. Any clues/workarounds? I am
    using WL 6.1.
    Thanks in advance,
    Eva
    The following files are below:
    Validate.java
    BMDefaultHandler.java
    validate.xml
    validate.xsd
    org.xml.sax.SAXException: Error:General Schema Error: Grammar with uri:http://schemas.xmlsoap.org/soap/envelope/
    , can not be
    found; schema namespace maybe wrong:
    Xerces supports schemas from the "http://www.w3.org/2001/XMLSchema" namespace
    or
    the instance document's namespace may not match the targetNamespace of the schema.
    at
    com.bluemartini.xml.BMDefaultHandler.error(BMDefaultHandler.java:32)
    at
    org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1249)
    at
    org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLEr
    ror(XMLValidator.java:1821)
    at
    org.apache.xerces.validators.common.XMLValidator.validateElementAndAttr
    ibutes(XMLValidator.java:3232)
    at
    org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLVa
    lidator.java:1229)
    at
    org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentS
    canner.java:1806)
    at
    org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispat
    ch(XMLDocumentScanner.java:949)
    at
    org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentSca
    nner.java:381)
    at
    org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
    at
    org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.ja
    va:195)
    at
    javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:191)
    at com.bluemartini.test.Validate.main(Validate.java:32)
    ===Validate.java
    package com.bluemartini.test;
    import java.io.*;
    import org.w3c.dom.*;
    import com.bluemartini.xml.*;
    // JAXP imports
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.ParserConfigurationException;
    * Sample test case.
    * Eva Flora
    public class Validate {
    public static void main(String[] argv) {
    try {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    factory.setValidating(true);
    factory.setAttribute("http://xml.org/sax/features/validation", Boolean.TRUE);
    factory.setAttribute("http://apache.org/xml/features/validation/schema",
    Boolean.TRUE);
    DocumentBuilder builder = factory.newDocumentBuilder();
    BMDefaultHandler bmErrorHandler = new BMDefaultHandler();
    builder.setErrorHandler(bmErrorHandler);
    File temp = new File("validate.xml");
    Document doc = builder.parse(temp);
    } catch (Exception e) {
    e.printStackTrace();
    ===BMDefaultHandler.java
    package com.bluemartini.xml;
    import com.bluemartini.dna.*;
    import org.xml.sax.helpers.DefaultHandler;
    import org.xml.sax.*;
    public class BMDefaultHandler extends
    DefaultHandler
    public BMDefaultHandler()
    public void warning(SAXParseException spe)
    throws SAXException
    System.out.println("Warning: " + spe.getMessage());
    public void error(SAXParseException spe)
    throws SAXException
    throw new SAXException("Error:" + spe.getMessage());
    public void fatalError(SAXParseException spe)
    throws SAXException
    throw new SAXException("Fatal Error: " + spe.getMessage());
    ===validate.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <soapns:Envelope xmlns:soapns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:test="http://www.test.com"
    xsi:noNamespaceSchemaLocation="validate.xsd">
         <soapns:Header/>
         <soapns:Body>
    <test:GWSMapRequestMessage>
              </test:GWSMapRequestMessage>
         </soapns:Body>
    </soapns:Envelope>
    ===validate.xsd
    <schema xmlns="http://www.w3.org/2000/10/XMLSchema">
    <element name="GWSMapRequestMessage" type="TestType"/>
    <complexType name="TestType">
    </complexType>
    </schema>

    I guess the problem is due to the schema namespace
    you are using.
    xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
    pls try with :
    "http://www.w3.org/2001/XMLSchema"
    regards,
    -manoj
    "Eva Flora" <[email protected]> wrote in message
    news:[email protected]...
    I am getting the error below. Any clues/workarounds? I am
    using WL 6.1.
    Thanks in advance,
    Eva
    The following files are below:
    Validate.java
    BMDefaultHandler.java
    validate.xml
    validate.xsd
    org.xml.sax.SAXException: Error:General Schema Error: Grammar with
    uri:http://schemas.xmlsoap.org/soap/envelope/
    , can not be
    found; schema namespace maybe wrong:
    Xerces supports schemas from the "http://www.w3.org/2001/XMLSchema"
    namespace
    or
    the instance document's namespace may not match the targetNamespace of the
    schema.
    at
    com.bluemartini.xml.BMDefaultHandler.error(BMDefaultHandler.java:32)
    at
    org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1249)
    at
    org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLEr
    ror(XMLValidator.java:1821)
    at
    org.apache.xerces.validators.common.XMLValidator.validateElementAndAttr
    ibutes(XMLValidator.java:3232)
    at
    org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLVa
    lidator.java:1229)
    at
    org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentS
    canner.java:1806)
    at
    org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispat
    ch(XMLDocumentScanner.java:949)
    at
    org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentSca
    nner.java:381)
    at
    org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
    at
    org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.ja
    va:195)
    at
    javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:191)
    at com.bluemartini.test.Validate.main(Validate.java:32)
    ===Validate.java
    package com.bluemartini.test;
    import java.io.*;
    import org.w3c.dom.*;
    import com.bluemartini.xml.*;
    // JAXP imports
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.ParserConfigurationException;
    * Sample test case.
    * Eva Flora
    public class Validate {
    public static void main(String[] argv) {
    try {
    DocumentBuilderFactory factory =
    DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    factory.setValidating(true);
    factory.setAttribute("http://xml.org/sax/features/validation",
    Boolean.TRUE);
    factory.setAttribute("http://apache.org/xml/features/validation/schema",
    Boolean.TRUE);
    DocumentBuilder builder = factory.newDocumentBuilder();
    BMDefaultHandler bmErrorHandler = new BMDefaultHandler();
    builder.setErrorHandler(bmErrorHandler);
    File temp = new File("validate.xml");
    Document doc = builder.parse(temp);
    } catch (Exception e) {
    e.printStackTrace();
    ===BMDefaultHandler.java
    package com.bluemartini.xml;
    import com.bluemartini.dna.*;
    import org.xml.sax.helpers.DefaultHandler;
    import org.xml.sax.*;
    public class BMDefaultHandler extends
    DefaultHandler
    public BMDefaultHandler()
    public void warning(SAXParseException spe)
    throws SAXException
    System.out.println("Warning: " + spe.getMessage());
    public void error(SAXParseException spe)
    throws SAXException
    throw new SAXException("Error:" + spe.getMessage());
    public void fatalError(SAXParseException spe)
    throws SAXException
    throw new SAXException("Fatal Error: " + spe.getMessage());
    ===validate.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <soapns:Envelope xmlns:soapns="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
    xmlns:test="http://www.test.com"
    xsi:noNamespaceSchemaLocation="validate.xsd">
    <soapns:Header/>
    <soapns:Body>
    <test:GWSMapRequestMessage>
    </test:GWSMapRequestMessage>
    </soapns:Body>
    </soapns:Envelope>
    ===validate.xsd
    <schema xmlns="http://www.w3.org/2000/10/XMLSchema">
    <element name="GWSMapRequestMessage" type="TestType"/>
    <complexType name="TestType">
    </complexType>
    </schema>
    [att1.html]

  • How do I set the grammar properties in Pages?

    I would like to change the setting on what grammar the Apple Pages proofreader checks. How can do change the settings in the proofreader?
    The two biggest annoyances in Pages proofreader is "Complex Word Choice" and "Wordy Expression". Depending on what is being written, there is sometimes a need for using "complex word choices" or "wordy expressions." For instance, I recently wrote "proceeded" and Pages marked it as a "complex word choice." It suggested that I use "continued" instead. First, I do not see "proceeded" as a complex word. Any sixth grader should understand the word "proceeded." Second, varying word choice makes a document more readable in my opinion. Since I used "continued" in a previous statement, I prefer not to use it so soon again. When I provide a direct quote from a source, which I often have to do, I get a lot of "Wordy Expression" marks from pages. Being a direct quote, I can't change what was said.
    I do not want to turn the grammar checker off, but I would like to disable these two specific checks within the proofreader.
    Thanks.
    James

    I agree that your choices are superior to the programmed suggestions.
    Since I am grateful for the education that I received, and have yet to meet a computer that can write, I never, ever use the grammar checker.
    A crutch for life only helps you limp better.
    Peter

Maybe you are looking for

  • Struts Portlet With Input Parameters

    Hi Everyone, Am I able to write a struts portlet that has input parameters? Right now, I have a struts portlet with a provider.xml that looks like this: <?xml version = '1.0' encoding = 'UTF-8'?> <?providerDefinition version="3.1"?> <provider class="

  • Duplicate missing songs

    Hi, I recently had to move my entire music library from one partition to another, and made a bit of a mess of working with iTunes. Now iTunes has two copies of every song in the library, every other one being marked with a question mark because (obvi

  • November Quarterly Update for Developers

    We've just opened up registration for the November 15th Quarterly developer update. Look for it at http://www.adobe.com/cfusion/event/index.cfm?event=detail&id=883099&loc=en_us This is a presentation tailored to developers for Adobe Creative Suite pr

  • BDC at Background

    How to set BDC call transaction driver program at background and this BDC doesnot have selection-screen. If we have selection-screen, there we can set this program at background. Without Selection-screen how to set this program at background?

  • GPS EXIF data removed when photos are synced to iPhone?

    I have manually added GPS EXIF metadata to photos that were taken by an old camera. After I synced these photos with iTunes for Win 11.3 to my iPhone all location data was gone. Is this a known issue? Your help is much appreciated!