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.

Similar Messages

  • Ctxcat index supporting multicolumn datastore

    I've been looking to see if a ctxcat index supports something like a multicolumn datastore.
    What I'm trying to do is to search multiple columns (all 256 bytes in size or less) using a like query on each of those columns with the result being ordered by up to 3 different non searched columns
    For example, the book scenerio
    A table with the following columns
    title
    publisher
    author
    publication_date
    quantity
    location
    I want to be able to search on title, publisher, and author all at once (optionally searching the tokens with % symbols), and then sorting on publication_date, quantity and location.
    Now doing the context index, it worked fine, until I started ordering the results. Straight "like" queries with the ordering were returning quicker.
    So I've started looking at ctxcat indexes to provide the flexibility of mixed query searching using the "order by" in the catsearch function.
    The question is, how do I setup and search all three columns(title, publisher, author) at once with ctxcat index? Since ctxcat indexes don't support support the datastore option, how do you search on multi-columns? Do I need to make a concatenated column with title, publisher and author, or is there something in the configuration of the ctxcat index that I'm missing?

    i have exactly the same situation - that is i need to search on four columns and am trying to use ctxcat ...
    but the twist i have is - based on what coulmns the user wants to search - i want to limit the serach to ONLY those columns
    Is there some way to do that using ctxcat ? ... other than creating a large number of extra columns containing different combinations of searchable columns... yikes ... wont even go there ....

  • Error while importing table having ctxcat index

    Hi
    I created a table and ctxcat index on the same. I exported the same. While importing, table got imported but for index creation it gave error imp-00017 with ora-29855.
    Though the index have been created but with some errors. I can see the index in all_indexes table but if i try to see the entry in dba_segments, record is not found.
    Seems that index is not created properly.
    Pls suggest ASAP.
    Regards
    Rajiv

    What's your source and target Oracle version ?
    1) make sure context option is installed on target DB
    2) create a user ctxsys, the schema where the context related objects resides

  • CTXCAT index problem: SUBSTRING_INDEX parameter doesn't work

    Hi,
    I need a help with ctxcat index on Oracle 10g. I need to improve searching using CTXCAT index. All is working quite well except SUBSTRING_INDEX parameter. I thought that following was necessary and sufficient:
    EXEC ctx_ddl.create_preference('KEVFT_WL', 'BASIC_WORDLIST');
    EXEC ctx_ddl.set_attribute('KEVFT_WL', 'substring_index', 'YES');
    EXEC ctx_ddl.set_attribute('KEVFT_WL', 'prefix_index', 'YES');
    EXEC ctx_ddl.set_attribute('KEVFT_WL', 'prefix_min_length', 1);
    EXEC ctx_ddl.set_attribute('KEVFT_WL', 'prefix_max_length', 6);
    This BASIC_WORDLIST preference set is used for index creation. But the problem is, that when I try to search using query:
    SELECT * FROM TMP_FULLTEXT
    WHERE CATSEARCH(fulltext, '%abc', null)> 0;
    then I get no rows in results. Despite the fact that row with the text 'aabc' exists in the table.
    Can anyone tell me what the problem is?
    Thank you,
    Julius Chrobak

    With a catsearch query operator, the wildcard is an asterisk (*), not a percent sign (%) as with a contains query operator. However, even with the correct wildcard, left truncation is not supported with ctxcat. However, if you use a query template, then you can use the context grammar with the % wildcard for context grammar and left truncation is supported. Please see the demonstration below that reproduces the problem, then corrects it.
    SCOTT@10gXE> SELECT * FROM v$version
      2  /
    BANNER
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
    PL/SQL Release 10.2.0.1.0 - Production
    CORE     10.2.0.1.0     Production
    TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    SCOTT@10gXE> CREATE TABLE tmp_fulltext (fulltext VARCHAR2 (30))
      2  /
    Table created.
    SCOTT@10gXE> INSERT ALL
      2  INTO tmp_fulltext VALUES ('aabc')
      3  INTO tmp_fulltext VALUES ('abcd')
      4  SELECT * FROM DUAL
      5  /
    2 rows created.
    SCOTT@10gXE> BEGIN
      2    ctx_ddl.create_preference ('KEVFT_WL', 'BASIC_WORDLIST');
      3    ctx_ddl.set_attribute      ('KEVFT_WL', 'substring_index',   'YES');
      4    ctx_ddl.set_attribute      ('KEVFT_WL', 'prefix_index',        'YES');
      5    ctx_ddl.set_attribute      ('KEVFT_WL', 'prefix_min_length', 1);
      6    ctx_ddl.set_attribute      ('KEVFT_WL', 'prefix_max_length', 6);
      7  END;
      8  /
    PL/SQL procedure successfully completed.
    SCOTT@10gXE> CREATE INDEX fulltext_idx ON tmp_fulltext (fulltext)
      2  INDEXTYPE IS CTXSYS.CTXCAT
      3  PARAMETERS ('WORDLIST KEVFT_WL')
      4  /
    Index created.
    SCOTT@10gXE> -- reproduction of original problem using wrong wildcard for catsearch:
    SCOTT@10gXE> SELECT * FROM TMP_FULLTEXT
      2  WHERE CATSEARCH (fulltext, '%abc', null) > 0
      3  /
    no rows selected
    SCOTT@10gXE> SELECT * FROM TMP_FULLTEXT
      2  WHERE CATSEARCH (fulltext, 'abc%', null) > 0
      3  /
    no rows selected
    SCOTT@10gXE> -- left truncation not supported, even with correct wildcard:
    SCOTT@10gXE> SELECT * FROM TMP_FULLTEXT
      2  WHERE CATSEARCH (fulltext, '*abc', null) > 0
      3  /
    no rows selected
    SCOTT@10gXE> SELECT * FROM TMP_FULLTEXT
      2  WHERE CATSEARCH (fulltext, 'abc*', null) > 0
      3  /
    FULLTEXT
    abcd
    SCOTT@10gXE> -- query using template with context grammar:
    SCOTT@10gXE> SELECT * FROM TMP_FULLTEXT
      2  WHERE CATSEARCH
      3            (fulltext,
      4             '<query>
      5             <textquery grammar="context">
      6               %abc
      7             </textquery>
      8              <query>',
      9             null) > 0
    10  /
    FULLTEXT
    aabc
    SCOTT@10gXE>

  • CTXCAT search index Issue - trying to index multi columns

    i can index more than one column in the same table using MULTI_COLUMN_DATASTORE but when the index type is CONTEXT
    but i need to index more than one column ,when the index type is CTXCAT
    putting into considerations that i found that MULTI_COLUMN_DATASTORE doesn't work with ctxcat
    if anybody knows any other way pleaze Help...
    thanks in advance

    MULTI_COLUMN_DATASTORE cannot be used with CTXCAT search as the this parameter is not supported
    i am asking about abnother way,or a work around MULTI_COLUMN_DATASTORE
    in order to work

  • CTXCAT index support MULTI_COLUMN_DATASTORE?

    I've been using a CONTEXT index in my app, however, having to re-synchronize the index is an issue with my high insert rate. So, I'm considering using a CTXCAT since all db updates are transactional.
    However, my CONTEXT query uses a MULTI_COLUMN_DATASTORE to query multiple columns via the concatenated column and it doesn't look like the CTXCAT index will support MULTI_COLUMN_DATASTORE? Does anyone know?
    If the MULTI_COLUMN_DATASTORE is not supported, is there an alternative query I could use whilst still being able to use CTXCAT index?
    Many thanks!

    Hi David,
    Until you get to 10g would a job that sync's frequently work? It sounds like the new sync on commit is what you need (provided it wouldn't cause performance problems for you), so would the job be an acceptable workaround until you upgrade?
    -Ron

  • Error when hit ctxsys.ctxcat index

    I use SQL query to generated report page in HTML DB, the query hit Oracle ctxsys.ctxcat indexes, after sent query, I got this error message. My question is: Does HTML DB support ctxsys.ctxcat index?
    report error:
    ORA-20000: Oracle Text error:
    DRG-10849: catsearch does not support functional invocation
    My sample query:
    SELECT distinct(FEATURE_ID),
    FEATURE_NAME
    from maint_query_view
    where FEATURE_NAME_OFFICIAL = 'Y'
    and feature_id in (select feature_id from maint_query_view
    where (catsearch(:FEATURENAME, 'index',null)>0);
    Thanks
    Lei

    Lei,
    1) HTML DB does support the CTXCAT index type.
    2) The error you've encountered seems specific to Oracle Text and not HTML DB (I would suspect you would encounter the same error if you issued the query from SQL*Plus).
    It's best to file a TAR with Oracle Worldwide Support on this one.
    Joel

  • Any way to utilize CTXCAT index?

    I’ve been looking into trying to add indexes to columns in a table which have a data type of VARCHAR2(4000). Does anyone know if there is a way to utilize a CTXCAT index from an OBIEE request? It requires a special syntax in the where clause so I'm not sure if there is a way to make OBIEE actual take advantage of the index if I do create it.
    Edited by: PBizme on May 6, 2010 2:31 PM

    Incase anyone else needs it, here are the pinouts:
    - Analog Ground
    2 - Analog Headphone Out Left
    3 - Audio Backpanel Mute -- short to ground to mute the backpanel (when headphones are plugged in)
    4 - Analog Headphone Out Right
    5 - same as #3
    6 - Mic input from front panel
    7 - key pin (shouldn't be there)
    8 - VREF out -- voltage reference for Mic
    9 - MIC IN MUTE -- ground when mic isn't plugged in, +2VDC when mic is plugged in
    0 - Audio cable detect -- will be ground when headphones are plugged in (not normally used)
    Side view of the card:
    [img"]http://www.cs.rpi.edu/&#37;7Ehollec/images/sonata+audigy.jpg">

  • CTXSYS.CTXCAT index and CATSEARCH problem

    I have table with just one column indexed (CBG_COMPANY_HOUSE_STREET_DIST) with CTXSYS.CTXCAT index. And the problem is that
    words like 'OR', 'IF', 'MR', 'MRS', 'A' and some more like these are NOT INDEXED at all..! So simply when I try to use CATSEARCH like
    select * from ros_dev.MAD_PLACES_DEDUPE where CATSEARCH(CBG_COMPANY_HOUSE_STREET_DIST,'MRS',null) > 0
    I get no results at all...
    What is the reason? What is the solution? Please, it is URGENT, I develope some software , I am not a DBA, and I have a deadline on Friday :(
    Thanks for any help!

    Ok - I just responded to your post over in the database forum. Same answer applies here. If you need help redoing the index, best to post here rather than the General Database forum though since it is definitely Text specific.
    Thanks,
    Ron

  • Create CTXCAT  index in parallel mode

    I am using Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production with oracle text version 11.2.0.2.0.
    Following script is used to create the ctxcat index but I noticed it is not creating the index in parallel. We have 16 cpu server. The table onto which text index is created has no partition.
    BEGIN
    --Storage preference
    Ctx_Ddl.Create_Preference ('IDX_STORE', 'basic_storage');
    Ctx_Ddl.Set_Attribute (preference_name => 'IDX_STORE',
    attribute_name => 'I_TABLE_CLAUSE',
    attribute_value => 'TABLESPACE C_DATA_02');
    Ctx_Ddl.set_attribute ('IDX_STORE',
    'I_INDEX_CLAUSE',
    'TABLESPACE C_IDX_02 COMPRESS 2');
    Ctx_Ddl.set_attribute (
    'IDX_STORE',
    'R_TABLE_CLAUSE',
    'TABLESPACE C_DATA_02 LOB(DATA) STORE AS (CACHE)'
    --Wordlist
    ctx_ddl.create_preference ('nbcwordlist', 'BASIC_WORDLIST');
    ctx_ddl.set_attribute ('nbcwordlist', 'PREFIX_INDEX', 'TRUE');
    ctx_ddl.set_attribute ('nbcwordlist', 'PREFIX_MIN_LENGTH', 1);
    ctx_ddl.set_attribute ('nbcwordlist', 'PREFIX_MAX_LENGTH', 64);
    ctx_ddl.set_attribute ('nbcwordlist', 'SUBSTRING_INDEX', 'NO');
    END;
    CREATE INDEX FTS_IDX ON INDVL_SRCH_NM (SRCH_NM)
    INDEXTYPE IS CTXSYS.CTXCAT
    PARAMETERS('STORAGE IDX_STORE STOPLIST C_STOPLIST WORDLIST C_WORDLIST')
    PARALLEL (DEGREE 16);
    What should be done to create this index in parallel? Is there any other thing that can be done to speed up creation without disabling prefix index.
    Thanks. I appreciate you time and effort.
    Edited by: spur230 on Nov 14, 2011 4:53 PM

    Hi,
    in the manual some remarks are made for parallel indexing, see http://download.oracle.com/docs/cd/E14072_01/text.112/e10945/ind.htm#CIHCBABI
    So it is possible to index in parallel, but you don't have control, the oracle db decides this for you. So it is possible that Oracle thinks that single indexing is faster, more work is done in the database besides the index creation, and many more factors (also mentioned in above document).
    I did many parallel indexing on systems, but always on quiet moments, so I have the most resources for creating indexes. Furthermore I noticed that system statistics can influence the creation. If the statistics are good for the CPU and I/O, the parallel creation can be optimised by the db.
    Herald ten Dam
    http://htendam.wordpress.com

  • Space occupied by clustered index Vs non-clustered index

    I am trying to understand the indexes. Does clustered index occupy more space than a non-clustered index because it carries the information about rest of the other columns also. Could you guys please help me understand this. Thanks in advance.
    svk

    Hi czarvk,
    Clustered index in SQL Server takes up more space than non-clustered indexes.
    Clustered index arranges the way records are stored in a table putting them in order (key, value), all the data are sorted on the values of the index.
    A non-clustered index is a completely different object in a table, containing only a subset of columns and a row locator to the table’s rows or to the clustered index’s key.
    So clustered index in SQL Server takes up more space than non-clustered indexes.
    If you have any question, please feel free to let me know.
    Regards,
    Donghui Li

  • REBUILD INDEX vs DROP/CREATE INDEX

    Hi there,
    Does anyone has already got some performance degradation after REBUILD INDEXes ? Would it be better to perform DROP/CREATE INDEX instead ?
    Thank you very much for anu reply.
    Best regards,
    Helena

    Hi,
    >>so is it then better to DROP/CREATE them ?
    Well, In fact I learned that when you rebuild an index, Oracle creates a new index from the old index and does not perform sorting while building the new index, which results in performance enhancement. In this case, depending of the size of your data it's necessary sufficient space on a tablespace for storing the old as well as the new index (while creating the new index). Other advantage, is that Oracle can use the old index for answering queries while it builds the new index too using [alter index <index_name> rebuild online].
    Cheers

  • Unable to extend index name of the index by 8 in tablespace

    Hello,
    I am not a DBA and do not have much experience in Oracle. When I was trying to restore the backup of my application, I received the following error. I could not able to proceed further in my tasks.
    ORA-01654: unable to extend index <name of the index> by 8 in tablespace <name of the Index tablespace>The following query was used to create the table space. Oracle version is 10g.
    CREATE TABLESPACE TS_JIRA
    DATAFILE 'D:\oracle\product\10.2.0\oradata\jiraadmi\TS_JIRA.dbf' SIZE 100M REUSE
    AUTOEXTEND ON NEXT 10M MAXSIZE 200M
    MINIMUM EXTENT 64K
    DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0);I do not know how to extend the size of the tablespace. Can anyone help to sort out this issue?
    Thanks in advance
    Ram

    Hi Ram;
    I suggest also review below doc for your future issue
    TROUBLESHOOTING GUIDE (TSG) - UNABLE TO CREATE / EXTEND Errors [ID 1025288.6]
    Overview Of ORA-01654: Unable To Extend Index %s.%s By %s In Tablespace %s [ID 146595.1]
    OERR: ORA 1654 unable to extend index <name.name> by <num> for tablespace <nam [ID 19049.1]
    I belive they will answer all your question ;)
    PS:Please dont forget to change thread status to answered if it possible when u belive your thread has been answered, it pretend to lose time of other forums user while they are searching open question which is not answered,thanks for understanding
    Regard
    Helios

  • Unable to create foreign key: InvalidArgument=Value of '0' is not valid for 'index'. Parameter name: index

    I am running an SQL(CE) script to create a DB. All script commands succeed, but the DB get "broken" after creating the last costaint: after running the script, viewing table properties of Table2 and clicking on "Manage relations" gives the following error: Unable to create foreign key: InvalidArgument=Value of '0' is not valid for 'index'. Parameter name: index. Wondering what does that refer to...
    Here it is the script. Please note that no error is thrown by running the following queries (even from code that passing the queries by hand, one-by-one to sql server management studio).
    CREATE TABLE [table1] (
    [id_rubrica] numeric(18,0) NOT NULL
    , [id_campo] numeric(18,0) NOT NULL
    , [nome] nvarchar(100) NOT NULL
    GO
    ALTER TABLE [table1] ADD PRIMARY KEY ([id_rubrica],[id_campo]);
    GO
    CREATE UNIQUE INDEX [UQ__m_campi] ON [table1] ([id_campo] Asc);
    GO
    CREATE TABLE [table2] (
    [id_campo] numeric(18,0) NOT NULL
    , [valore] nvarchar(4000) NOT NULL
    GO
    ALTER TABLE [table2] ADD PRIMARY KEY ([id_campo],[valore]);
    GO
    ALTER TABLE [table2] ADD CONSTRAINT [campo_valoriFissi] FOREIGN KEY ([id_campo]) REFERENCES [table1]([id_campo]);
    GO
    Sid (MCP - http://www.sugata.eu)

    I know this is kind of old post, but did this realy solved your problem?
    I'm getting this same error message after adding a FK constraint via UI on VS2008 Server Explorer.
    I can add the constraint with no errors, but the constraint is not created on the DataSet wizard (strongly typed datasets on Win CE 6) and when I click "Manage Relations" on the "Table Properties" this error pop out:
    "InvalidArgument=Value or '0' is not valid for 'index'.
    Parameter name: index"
    Even after vreating my table with the relation in SQL the same occurs:
    CREATE TABLE pedidosRastreios (
        idPedidoRastreio INT NOT NULL IDENTITY PRIMARY KEY,
        idPedido INT NOT NULL CONSTRAINT FK_pedidosRastreios_pedidos REFERENCES pedidos(idPedido) ON DELETE CASCADE,
        codigo NVARCHAR(20) NOT NULL

  • R-Tree Index v's Quadtree Index

    Hi,
    In the 8.1.7 spatial documentation it says that R-Tree index may not be a good choice for a geometry table that has heavy update activity.
    Can anyone define and quantify what heavy update is?
    Thanks

    There hasn't been a formal analysis of R-tree update performance. Some things that are known:
    The spatial index create statement includes a percent free specification that allows free space to remain in the R-tree to accomodate future inserts.
    If the data doesn't need to be kept on-line all the time, then the R-tree index can be rebuilt.
    The performance associated with both R-tree index updates and quadtree index updates is dependent on the data being inserted. Updating point data seems to be faster with quadtrees. Updating simple geometries also seems to be faster with quadtrees. There is a point though where tiling complicated geometries dominates the quadtree index update time, and at some point of complexity it becomes faster to update R-tree indexes.
    If anyone has info to add here it would be quite useful.
    Hope this helps,
    dan

Maybe you are looking for