Friday, February 24, 2012

C# is ignored on 2000 Server in mssearch

With Windows 2000 Server and SQL Server 2000 I have a full text indexed
database.
I want to be able to search for C# (the content are resumes) but cannot
because it is an 'ignored word'.
I believe the issue is due to the operating system version of the mssearch
component, which explains why it works just fine on my 2003 Server laptop*
installation.
What I am asking (a year on) is : do I really have to upgrade my production
Windows 2000 server machine to 2003 solely to get the full text search to
index C# ? Or can I upgrade my mssearch component somehow?
-simon
*yes i did day 2003 server and laptop
Andy,
Actually, it's not due to the OS version of a MSSearch component, but to the
OS supplied wordbreaker, infosoft.dll for Win2K and the newer langwrbk.dll
for Win2003 and WinXP. Also, there was a specific fix in Win2K SP3 for C#,
that may also be a factor.
Since you have SQL Server 2000 installed on Win2K, SQL FTS is using the
OS-supplied wordbreaker dll - infosoft.dll - and this wordbreaker is
different from Win2003 and it's new wordbreaker dll - langwbrk.dll and
therefore, you will get different results based upon searching for C (or any
other single letter) and punctuation that is in contact with the single
letter, such as C++ or J++ or C#.
I've done some testing with c vs. c++ vs. c# on both Win2K and Win2003 with
both CONTAINS and FREETEXT. Below are some of my results for this somewhat
problematic and very frequently asked question and I can supply the details,
but here are the summary:
FREETEXT will find C++ c# C- but NOT C without Error 7619 on Win2K SP3 with
SQL2K RTM when C is in noise files.
CONTAINS will find C++ c# C- but Error 7619 with C on Win2K SP3 with SQL2K
RTM when C is in noise files.
FREETEXT will find all rows contain C regardless of punctuation on Win2K SP3
with SQL2K RTM when C is NOT in noise files.
CONTAINS will find all rows contain C regardless of punctuation on Win2K SP3
with SQL2K RTM when C is NOT in noise files.
FREETEXT will find C++ C# C- but NOT C without Error 7619 on Win2003 with
SQL2K SP2 when C is in noise files.
CONTAINS will find C++ C# C- but Error 7619 with C on Win2003 with SQL2K SP2
when C is in noise files.
FREETEXT will find all rows contain C and C<punctuation> on Win2003 with
SQL2K SP2 when C is NOT in noise files
CONTAINS will find only rows containing C regardless of punctuation, but
multiple rows depending upon Capitalization on Win2003 with SQL2K SP2 when
C is NOT in noise files.
You can "have your cake, but not eat it" with this kind of SQL FTS search on
just a single letter and punctuation, you best bet is to AND it with another
SQL FTS query using either a special made-up word or a special phrase, for
example CSharp or "C Sharp"...
Note, that the US_English wordbreaker will "break" words based upon
language-specific conditions, only the Neutral wordbreaker "breaks" words
based upon "white space" on any OS platform and that on Win2K SP3 and above
there was a specific fix for C++ vs. C (note capitalization).
Regards,
John
"Andy Gilman" <andygilman2@.hotmail.com> wrote in message
news:eS6Lub6YEHA.3128@.TK2MSFTNGP09.phx.gbl...
> With Windows 2000 Server and SQL Server 2000 I have a full text indexed
> database.
> I want to be able to search for C# (the content are resumes) but cannot
> because it is an 'ignored word'.
> I believe the issue is due to the operating system version of the mssearch
> component, which explains why it works just fine on my 2003 Server laptop*
> installation.
> What I am asking (a year on) is : do I really have to upgrade my
production
> Windows 2000 server machine to 2003 solely to get the full text search to
> index C# ? Or can I upgrade my mssearch component somehow?
> -simon
>
> *yes i did day 2003 server and laptop
>
|||i have similar problem and it is giving wrong results
can anyone help?
*** Sent via Developersdex http://www.codecomments.com ***
Don't just participate in USENET...get rewarded for it!
|||brijesh,
What is your environment? SQL Server version, language as well as OS
Platform? Could post the output of the following sql script on the server
where you hare having your problem? Also, could you post your query and the
expected results?
use <your_database_name_here>
go
SELECT @.@.language
SELECT @.@.version
sp_configure 'default full-text language'
EXEC sp_help_fulltext_catalogs
EXEC sp_help_fulltext_tables
EXEC sp_help_fulltext_columns
EXEC sp_help <your_FT-enable_table_name_here>
go
Regards,
John
"brijesh Tekrawala" <brijesh@.jzero.com> wrote in message
news:efMd2zmaEHA.4052@.TK2MSFTNGP10.phx.gbl...
> i have similar problem and it is giving wrong results
> can anyone help?
>
>
> *** Sent via Developersdex http://www.codecomments.com ***
> Don't just participate in USENET...get rewarded for it!
|||SELECT @.@.language
output
us_english
SELECT @.@.version
output
Microsoft SQL Server 2000 - 8.00.760 (Intel X86)
Dec 17 2002 14:22:05
Copyright (c) 1988-2003 Microsoft Corporation
Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
EXEC sp_help_fulltext_catalogs
output
5 Search Courses C:\Program Files\Microsoft SQL
Server\MSSQL\FTDATA
EXEC sp_help_fulltext_tables
Table_NAME
Courses
*** Sent via Developersdex http://www.codecomments.com ***
Don't just participate in USENET...get rewarded for it!
|||brijesh,
The reason I asked for additional information is to determine your
environment and provide you with the answer to your question.
However, the below reply is not complete, but for now enough provide you
with feedback as well as to ask for additional required information, if my
reply does not provide you with the expected answer to your question.
You are using SQL Server 2000 (SQL2K) SP3 on Windows 2000 Server (Win2K) SP4
with the default language of US_English, however, the language of the text
in your FT-enabled table "Courses" textual column is unknown at this time.
Additionally, you did not provide an example of your FTS query (CONTAINS or
FREETEXT ?) along with the exact search word or expected results.
At this point, I'm going to make some assumptions, that due to a lack of
information, may not provide you with a correct response to your question.
Specifically, have you removed the single letter "C" from the noise.enu file
located under \FTDATA\SQLServer\Config where your SQL Server 2000 is
installed. If so, have you also run a Full Population after removing this
single letter?
Since you have SQL Server 2000 installed on Win2K, SQL FTS is using the
OS-supplied wordbreaker dll - infosoft.dll.
In your environment, you will encounter the following results:
FREETEXT will find C++, c#, C-, but NOT C without Error 7619 on Win2K SP4
with SQL2K SP3 when C is in noise.enu.
CONTAINS will find C++ c# C- but Error 7619 with C on Win2K SP4 with SQL2K
SP3 when C is in noise.enu.
FREETEXT will find all rows contain C regardless of punctuation on Win2K SP4
with SQL2K SP3 when C is NOT in noise.enu.
CONTAINS will find all rows contain C regardless of punctuation on Win2K SP4
with SQL2K SP3 when C is NOT in noise.enu.
If you have further questions, please post your exact SQL query, search
word, and sample data.
Regards,
John
"brijesh Tekrawala" <brijesh@.jzero.com> wrote in message
news:O6aGYznaEHA.2908@.TK2MSFTNGP10.phx.gbl...
>
> SELECT @.@.language
> output
> us_english
> SELECT @.@.version
> output
> Microsoft SQL Server 2000 - 8.00.760 (Intel X86)
> Dec 17 2002 14:22:05
> Copyright (c) 1988-2003 Microsoft Corporation
> Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
>
> EXEC sp_help_fulltext_catalogs
> output
> 5 Search Courses C:\Program Files\Microsoft SQL
> Server\MSSQL\FTDATA
>
> EXEC sp_help_fulltext_tables
> Table_NAME
> Courses
>
> *** Sent via Developersdex http://www.codecomments.com ***
> Don't just participate in USENET...get rewarded for it!
>
|||i have removed C char from noise file. and also restarted full
population....still it is giving wrong results.
Sample Query is as follow
Select[KEY], RANK,CourseName
fromContainsTable(Courses, *, 'c#') S,
Courses E
WhereE.CourseID = S.[KEY]
Order by Rank desc
it is returning rows contains...
c Programming
c++ Programming
C# Programming
*** Sent via Developersdex http://www.codecomments.com ***
Don't just participate in USENET...get rewarded for it!
|||This seems to be working. What rows is is missing?
Hilary Cotter
Looking for a book on SQL Server replication?
http://www.nwsu.com/0974973602.html
"brijesh Tekrawala" <brijesh@.jzero.com> wrote in message
news:eLCYMrvaEHA.4092@.TK2MSFTNGP11.phx.gbl...
> i have removed C char from noise file. and also restarted full
> population....still it is giving wrong results.
>
> Sample Query is as follow
> Select [KEY], RANK,CourseName
> from ContainsTable(Courses, *, 'c#') S,
> Courses E
> Where E.CourseID = S.[KEY]
> Order by Rank desc
>
> it is returning rows contains...
> c Programming
> c++ Programming
> C# Programming
>
>
> *** Sent via Developersdex http://www.codecomments.com ***
> Don't just participate in USENET...get rewarded for it!
|||Hilary,
it is returning wrong results...
c Programming
c++ Programming
C# Programming
it should return only rows containing C# word... so only one row...
*** Sent via Developersdex http://www.codecomments.com ***
Don't just participate in USENET...get rewarded for it!
|||put the c back in your noise word list and rebuild your catalog.
Hilary Cotter
Looking for a book on SQL Server replication?
http://www.nwsu.com/0974973602.html
"brijesh Tekrawala" <brijesh@.jzero.com> wrote in message
news:e0xZMGyaEHA.3752@.TK2MSFTNGP12.phx.gbl...
> Hilary,
> it is returning wrong results...
> c Programming
> c++ Programming
> C# Programming
> --
>
> it should return only rows containing C# word... so only one row...
>
>
> *** Sent via Developersdex http://www.codecomments.com ***
> Don't just participate in USENET...get rewarded for it!

No comments:

Post a Comment