View Complete Thread | FoxWeb Forum Home
Search:
Date:    Msg ID:   
From:    Thread:   
Subject:   
When ExclusiveIndexing is set to .F., the CreateIndex and UpdateIndex methods delete all full text search data, create a table index and then cycle through your text, creating full text search data records.  Since the full text search index table is already indexed, populating it with data takes longer, but it is searchable during this process.

When ExclusiveIndexing is set to .T., the CreateIndex and UpdateIndex methods delete all full text search data, but do not create a table index prior to processing your text.  After the table is populated, (which is much faster because the the table is not indexed), the software indexes the table.

The full text search engine continuously monitors and adjusts the script timeout while it is processing your text data and this is why it does not time out under normal circumstances.  This is done, by adding 5 seconds to the script timeout, whenever it falls to less than 5 seconds.  This means that at the time that all text data is processed, there will be between 5 and 10 seconds of script timeout left.

As I explained earlier, when ExclusiveIndexing is set to .T., the full text search index table is indexed after the text data is processed.  My suspicion is that this process takes longer than then remaining script timeout, which results in the error you are getting.

In my opinion, there's no reason to ever use exclusive indexing.  Even though shared indexing takes longer, it does not disrupt the application, which can continue to function during the indexing process, albeit with a incomplete results.
FoxWeb Support Team
support@foxweb.com email
Sent by Jim on 01/04/2008 08:01:36 PM:
Ok.  Hopefully this falls into the 'Dumb User Error' category.  I'm trying to get some metrics around the FTS and wrote the following code:

oFullText = NEWOBJECT('classFullText')
oFullText.Table = "whatever.dbf"
oFullText.ExclusiveIndexing = .t.

response.write("Start:  ")
response.write(datetime())
response.write("<br><br>")
response.flush

RetValue = oFullText.CreateIndex('whatever_ID', 'name,alias,addresses,activities,description:html', .T., FILETOSTR('FTSNoiseWords.txt'), 2)

response.write("<br><br>")
response.write("End:&nbsp;&nbsp;")
response.write(datetime())

RELEASE oFullText
CLEAR CLASS classfulltext
(I'm sure that the FoxWeb folks will recognize much of the above code is from their very own sample source code.)

Here's the issue: When I set oFullText.ExclusiveIndexing to .F., the program works just fine and spits out the start and end times, along with 1,051  'Indexing record x of 10510' messages in between.  When I set oFullText.ExclusiveIndexing to .T., I get the start time and the 1,051 messages.  Then I get "FoxWeb Channel Stopped Responding.

I would have expected something like this when that value was set to false seeing as it takes well over 6 times longer to complete.  Since I don't have the source, I can't determin where it's hanging up or why.  As always, any ideas or insights would be greatly appreciated.

Some other particulars: using Foxpro V9 (patched) on Windows 2003.  The 'name' and 'alias' fields are character(100) and the rest are memos.  There are just over 25,000 unique words.  The non-exclusive run takes 2,173 seconds (just over 37 minutes). 

-Jim


"The true measure of a career is to be able to be content, even proud that you succeeded through your own endeavors without leaving a trail of casualties in your wake."  - Allen Greenspan