Maximo List Archive

This is an archive of the Maximo Yahoo Community. The content of this pages may be a sometimes obsolete so please check post dates.
Thanks to the community owner Christopher Wanko for providing the content.



SQL Server 2012 stopwords help

From: therron (2015-07-16 12:53)


Working on my fairly-fresh installation of Maximo 7.6 that hasn't had data imported into it yet. I am wanting to make it so when users search a Description field with a single digit, the search won't fail. For example, in the Item Master or Inventory apps, if someone wants to search for a 1" screw in the Description, they can.

Under SQL Server 2000 it was not possible. I've been led to believe in SQL Server 2005 and newer it can be done.

Following instructions taken from
https://msdn.microsoft.com/en-us/library/hh231252(v=sql.110).aspx https://msdn.microsoft.com/en-us/library/hh231252(v=sql.110).aspx
and
https://technet.microsoft.com/library/cc263242.aspx https://technet.microsoft.com/library/cc263242.aspx

I used Notepad to create a custom dictionary file. On the machine with SQL Server I created a Unicode file:
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\Custom0009.lex

In the file are entries such as:
1
2
3
4
5
6
7
8
9
0
1/4-20
5/16-18
3/8-16
...

Then I restarted the service with this command:
exec sp_fulltext_service 'restart_all_fdhosts'

But it still isn't working. I put an entry in the Companies table, TEST1 with description Test 1 and tested to see what was indexed. Test is; 1 isn't.

And I don't see where or why those "words" are ignored anyways. These queries:

SELECT stoplist_id, names
FROM sys.fulltext_stoplists;

SELECT stoplist_id, stopword, language
FROM sys.fulltext_stopwords;

should show me everything being stopped. They return no records, so nothing should be stopped, right?

Can anyone help?

Travis Herron



From: krosemanp (2015-07-17 08:16)

SQL 2005 used a text file to store stopwords. SQL 2008 and above use a database object instead.
In 2008+, there is a system stoplist that contains a set of words/numbers that is used by default. This list cannot be modified. To exclude entries from the system stoplist you create a custom stoplist as a copy of the system list then REMOVE the entries from it that you DON'T WANT BLOCKED. After creating your custom list, you must edit each fulltext index and change the stoplist used from System to your custom list, then rebuild the catalog.
Use this for creating and editing a custom stoplist:
https://msdn.microsoft.com/en-us/library/ms142551%28v=sql.110%29.aspx https://msdn.microsoft.com/en-us/library/ms142551%28v=sql.110%29.aspx
I created a script for removing the system stoplist from all fulltext indexes in my Maximo database. It should also work for specifying a custom list (I hope Yahoo doesn't botch the formatting):
DECLARE @stoplistname VARCHAR(50), @textcatalogname VARCHAR(50), @sql VARCHAR(500)
SET @stoplistname='off' --Specify custom name of stoplist to use or 'system' for default list or 'off' to remove stoplist
SET @textcatalogname='textcatalog' --Specify name of text catalog that will require rebuild, if more than one is modified manually rebuild the rest
SET @sql='IF EXISTS(SELECT 1 FROM sys.fulltext_indexes WHERE object_id = OBJECT_ID(''?'')) ALTER FULLTEXT INDEX ON ? SET STOPLIST '+@stoplistname
EXEC sp_msforeachtable @sql
EXEC ('ALTER FULLTEXT CATALOG '+@textcatalogname+' REBUILD')
GO

---In MAXIMO@yahoogroups.com, <therron@...> wrote :
Working on my fairly-fresh installation of Maximo 7.6 that hasn't had data imported into it yet. I am wanting to make it so when users search a Description field with a single digit, the search won't fail. For example, in the Item Master or Inventory apps, if someone wants to search for a 1" screw in the Description, they can.


Under SQL Server 2000 it was not possible. I've been led to believe in SQL Server 2005 and newer it can be done.


Following instructions taken from
https://msdn.microsoft.com/en-us/library/hh231252( https://msdn.microsoft.com/en-us/library/hh231252(v=sql.110).aspx https://msdn.microsoft.com/en-us/library/hh231252( https://msdn.microsoft.com/en-us/library/hh231252(v=sql.110).aspx
and
https://technet.microsoft.com/library/cc263242.aspx https://technet.microsoft.com/library/cc263242.aspx https://technet.microsoft.com/library/cc263242.aspx https://technet.microsoft.com/library/cc263242.aspx


I used Notepad to create a custom dictionary file. On the machine with SQL Server I created a Unicode file:
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\Custom0009.lex


In the file are entries such as:
1
2
3
4
5
6
7
8
9
0
1/4-20
5/16-18
3/8-16
...


Then I restarted the service with this command:
exec sp_fulltext_service 'restart_all_fdhosts'


But it still isn't working. I put an entry in the Companies table, TEST1 with description Test 1 and tested to see what was indexed. Test is; 1 isn't.


And I don't see where or why those "words" are ignored anyways. These queries:


SELECT stoplist_id, names
FROM sys.fulltext_stoplists;


SELECT stoplist_id, stopword, language
FROM sys.fulltext_stopwords;


should show me everything being stopped. They return no records, so nothing should be stopped, right?


Can anyone help?


Travis Herron