I automated my disk backups, but I kept having to delete the extra backup files manually so I wouldn't run out of space. I decided I needed to automate that task as well.
Add the following Python script to a task so it will run automatically.
Python script:
import os
import datetime
import fnmatch
dir_to_search = "[full path to backup directory]"
for dirpath, dirnames, filenames in os.walk(dir_to_search):
intCountOfTotalBackups = len(fnmatch.filter(filenames, '[Backup name, same as the Macrium XML file]*-00-00.mrimg'))
print "Total Backups: " + str(intCountOfTotalBackups)
intCountOfBackupsToDelete = 0
for file in fnmatch.filter(filenames, '[Backup name, same as the Macrium XML file]*-00-00.mrimg'):
curpath = os.path.join(dirpath, file)
file_modified = datetime.datetime.fromtimestamp(os.path.getmtime(curpath))
#keep a weeks worth of backups
if datetime.datetime.now() - file_modified > datetime.timedelta(hours=168):
intCountOfBackupsToDelete += 1
print intCountOfBackupsToDelete
#always keep at least a few backups, even if they are old.
if intCountOfBackupsToDelete < (intCountOfTotalBackups - 4):
print str(intCountOfBackupsToDelete) + ' < ' + str(intCountOfTotalBackups - 4)
for file in fnmatch.filter(filenames, 'Atom_Nightly*-00-00.mrimg'):
curpath = os.path.join(dirpath, file)
file_modified = datetime.datetime.fromtimestamp(os.path.getmtime(curpath))
if datetime.datetime.now() - file_modified > datetime.timedelta(hours=168):
os.remove(curpath)
print "remove " + curpath
#input("Press Enter to continue...")
Showing posts with label example. Show all posts
Showing posts with label example. Show all posts
20140121
20100603
Restore Database and "Single User" mode
I recently restored a database and it gave an error after restore about indexes and rowguid columns, but the database was there, so I'm going with it.
But it showed up as "databasename (single user)" and I couldn't use it because "there is already a user logged into this database".
so I had to change it, this link was very helpful:
http://remidian.com/mssql/remove-sql-server-database-from-single-user-mode.html
But it showed up as "databasename (single user)" and I couldn't use it because "there is already a user logged into this database".
so I had to change it, this link was very helpful:
http://remidian.com/mssql/remove-sql-server-database-from-single-user-mode.html
SELECT spid
FROM sysprocesses p inner join sysdatabases d on p.dbid = d.dbid
WHERE d.name = 'DatabaseName';
KILL <spid returned above>
EXEC sp_dboption 'DatabaseName', 'single user', 'FALSE';
20100129
Processing QBXML In SQL Server
I've been working with QuickBooks again, and this time I need to parse some QBXML in the database so I can do some data syncronization on a schedule.
SQL Server 2005+ has some nice XML tools that make things a lot easier. I was having trouble getting things to show up, but eventually found some pretty basic examples.
I'm parsing an Invoice Query response.
Here is what I came up with:
SQL Server 2005+ has some nice XML tools that make things a lot easier. I was having trouble getting things to show up, but eventually found some pretty basic examples.
I'm parsing an Invoice Query response.
Here is what I came up with:
-- variable to hold document reference
DECLARE @docHandle int
-- variable to hold actual XML
DECLARE @xmlDocument nvarchar(max) -- or xml type
-- Fill XML variable
SELECT TOP 1 @xmlDocument = QBXML FROM QBBridge ORDER BY QBBridgeID DESC
-- Use built in Procedure to process the XML into Data
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument;
DECLARE @ParentID int
DECLARE qbXMLCursor CURSOR FOR
-- Get All InvoiceRet Objects.
SELECT ID FROM OPENXML(@docHandle, N'/QBXML/QBXMLMsgsRs') WHERE NodeType = 1 AND LocalName = 'InvoiceRet'
-- cycle through InvoiceRets and compile Sub Data.
OPEN qbXMLCursor
FETCH NEXT FROM qbXMLCursor INTO @ParentID
WHILE @@FETCH_STATUS = 0
BEGIN
-- Use Common Table Expression to compile values to names of parent nodes
-- I named my table columns <ParentName>.<ParentName>.<Name> so I'm sitting pretty for an insert from this.
WITH InvoiceValues ([LocalName], [Value], [Level], [ID]) AS
(
SELECT LocalName,
[text],
1 AS [Level],
[ID]
FROM OPENXML(@docHandle, N'/QBXML/QBXMLMsgsRs')
WHERE ParentID = @ParentID
UNION ALL
SELECT CASE WHEN SubValues.LocalName = '#text' THEN
InvoiceValues.LocalName
ELSE
InvoiceValues.LocalName + '.' + SubValues.LocalName
END As LocalName,
[text],
InvoiceValues.[Level] + 1 AS [Level],
SubValues.[ID]
FROM InvoiceValues
INNER JOIN OPENXML(@docHandle, N'/QBXML/QBXMLMsgsRs') As SubValues
ON InvoiceValues.ID = SubValues.ParentID
)
SELECT [LocalName], [Value]
FROM InvoiceValues
WHERE Value IS NOT NULL
FETCH NEXT FROM qbXMLCursor INTO @ParentID
END
CLOSE qbXMLCursor
DEALLOCATE qbXMLCursor
EXEC sp_xml_removedocument @docHandle
20091103
SQL Server FTS Thesaurus tsENU.xml Names
Here is what I am using for my FTS Thesaurus tsENU.xml. It is mostly names, but I put in some numbers too (though these are useless if they are in your noise file as is default), and the html encoded ampersand '&' with 'and' but I think that is useless too.
<XML ID="Microsoft Search Thesaurus">
<!-- Commented out
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<expansion>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansion>
<replacement>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</replacement>
<expansion>
<sub>run</sub>
<sub>jog</sub>
</expansion>
</thesaurus>
-->
<!--Original Name Source http://www.tngenweb.org/franklin/frannick.htm-->
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<!--Special Text-->
<expansion>
<sub>&</sub>
<sub>and</sub>
</expansion>
<expansion>
<sub>0</sub>
<sub>Zero</sub>
</expansion>
<expansion>
<sub>1</sub>
<sub>One</sub>
</expansion>
<expansion>
<sub>2</sub>
<sub>Two</sub>
</expansion>
<expansion>
<sub>3</sub>
<sub>Three</sub>
</expansion>
<expansion>
<sub>4</sub>
<sub>Four</sub>
</expansion>
<expansion>
<sub>5</sub>
<sub>Five</sub>
</expansion>
<expansion>
<sub>6</sub>
<sub>Six</sub>
</expansion>
<expansion>
<sub>7</sub>
<sub>Seven</sub>
</expansion>
<expansion>
<sub>8</sub>
<sub>Eight</sub>
</expansion>
<expansion>
<sub>9</sub>
<sub>Nine</sub>
</expansion>
<expansion>
<sub>10</sub>
<sub>Ten</sub>
</expansion>
<!--End Special Text-->
<!--Names-->
<expansion>
<sub>Aaron</sub>
<sub>Ron</sub>
</expansion>
<expansion>
<sub>Abigail</sub>
<sub>Abie</sub>
<sub>Aby</sub>
<sub>Abbie</sub>
<sub>abby</sub>
<sub>Gail</sub>
<sub>Nabby</sub>
</expansion>
<expansion>
<sub>Abraham</sub>
<sub>Abe</sub>
<sub>Abram</sub>
<sub>Bram</sub>
</expansion>
<expansion>
<sub>Adelaide</sub>
<sub>Ada</sub>
<sub>Addie</sub>
<sub>Adela</sub>
<sub>Adeline</sub>
<sub>Della</sub>
<sub>Heide</sub>
<sub>Addy</sub>
</expansion>
<expansion>
<sub>Adolphus</sub>
<sub>Ado</sub>
<sub>Adolph</sub>
<sub>Dolph</sub>
</expansion>
<expansion>
<sub>Adrienne</sub>
<sub>Adrian</sub>
</expansion>
<expansion>
<sub>Agatha</sub>
<sub>Ag</sub>
<sub>Aggie</sub>
<sub>Agnes</sub>
<sub>Aggy</sub>
</expansion>
<expansion>
<sub>Alan</sub>
<sub>Alanson</sub>
</expansion>
<expansion>
<sub>Albert</sub>
<sub>Al</sub>
<sub>Bert</sub>
<sub>Bird</sub>
<sub>Alberta</sub>
<sub>Abertina</sub>
<sub>Albertine</sub>
<sub>Bertie</sub>
<sub>Adelbert</sub>
<sub>Del</sub>
<sub>Delbert</sub>
<sub>Bertram</sub>
<sub>Alfred</sub>
<sub>Alf</sub>
<sub>Alfie</sub>
<sub>Alfreda</sub>
<sub>Alfy</sub>
<sub>Frieda</sub>
</expansion>
<expansion>
<sub>Alexander</sub>
<sub>Alec</sub>
<sub>Alex</sub>
<sub>Lex</sub>
<sub>Alexis</sub>
<sub>Alexandra</sub>
<sub>Lexa</sub>
<sub>Xan</sub>
<sub>Alexandria</sub>
<sub>Lexi</sub>
<sub>Alyx</sub>
<sub>Alix</sub>
</expansion>
<expansion>
<sub>Alice</sub>
<sub>Alcy</sub>
<sub>Alicia</sub>
</expansion>
<expansion>
<sub>Alison</sub>
<sub>Ali</sub>
<sub>Ally</sub>
<sub>Allie</sub>
<sub>Aly</sub>
</expansion>
<expansion>
<sub>Amanda</sub>
<sub>Manda</sub>
<sub>Mandy</sub>
<sub>Mandie</sub>
<sub>Mandi</sub>
</expansion>
<expansion>
<sub>Andrew</sub>
<sub>Andy</sub>
<sub>Ansey</sub>
<sub>Drew</sub>
<sub>Andrea</sub>
<sub>Andi</sub>
</expansion>
<expansion>
<sub>Angela</sub>
<sub>Angel</sub>
<sub>Angelica</sub>
<sub>Angelina</sub>
<sub>Angeline</sub>
<sub>Angie</sub>
</expansion>
<expansion>
<sub>Ann</sub>
<sub>Anna</sub>
<sub>Anne</sub>
<sub>Annie</sub>
<sub>Annette</sub>
</expansion>
<expansion>
<sub>Anthony</sub>
<sub>Tony</sub>
<sub>Antoinette</sub>
<sub>Antonia</sub>
<sub>Toni</sub>
<sub>Tonie</sub>
</expansion>
<expansion>
<sub>Barbara</sub>
<sub>Babs</sub>
<sub>Barb</sub>
<sub>Barbie</sub>
<sub>Barby</sub>
</expansion>
<expansion>
<sub>Barnard</sub>
<sub>Bernard</sub>
<sub>Barney</sub>
<sub>Bernie</sub>
</expansion>
<expansion>
<sub>Bartholomew</sub>
<sub>Bart</sub>
<sub>Bartel</sub>
<sub>Barth</sub>
<sub>Bat</sub>
<sub>Barticus</sub>
</expansion>
<expansion>
<sub>Benjamin</sub>
<sub>Ben</sub>
<sub>Benjie</sub>
<sub>Bennie</sub>
<sub>Benny</sub>
</expansion>
<expansion>
<sub>Beverly</sub>
<sub>Bev</sub>
</expansion>
<expansion>
<sub>Boe</sub>
<sub>Bo</sub>
</expansion>
<expansion>
<sub>Brian</sub>
<sub>Bryan</sub>
<sub>Bryant</sub>
</expansion>
<expansion>
<sub>Brittany</sub>
<sub>Britt</sub>
<sub>Brittney</sub>
</expansion>
<expansion>
<sub>Cameron</sub>
<sub>Cam</sub>
</expansion>
<expansion>
<sub>Candace</sub>
<sub>Candy</sub>
</expansion>
<expansion>
<sub>Carl</sub>
<sub>Karl</sub>
</expansion>
<expansion>
<sub>Charles</sub>
<sub>Charlie</sub>
<sub>Charly</sub>
<sub>Chaz</sub>
<sub>Chuck</sub>
</expansion>
<expansion>
<sub>Catherine</sub>
<sub>Cathy</sub>
<sub>Katharine</sub>
<sub>Katie</sub>
<sub>Kathleen</sub>
<sub>Kittie</sub>
<sub>Cathleen</sub>
<sub>Kat</sub>
<sub>Kate</sub>
<sub>Katy</sub>
<sub>Kitsey</sub>
<sub>Kitty</sub>
</expansion>
<expansion>
<sub>Cecilia</sub>
<sub>Celia</sub>
<sub>Cecil</sub>
</expansion>
<expansion>
<sub>Celinda</sub>
<sub>Linda</sub>
<sub>Lindy</sub>
<sub>Lynn</sub>
</expansion>
<expansion>
<sub>Christine</sub>
<sub>Christiana</sub>
<sub>Crissy</sub>
<sub>Christy</sub>
<sub>Tina</sub>
<sub>Kristine</sub>
</expansion>
<expansion>
<sub>Clara</sub>
<sub>Claire</sub>
<sub>Clarice</sub>
<sub>Clarissa</sub>
</expansion>
<expansion>
<sub>Cory</sub>
<sub>Corey</sub>
<sub>Cori</sub>
</expansion>
<expansion>
<sub>Crystal</sub>
<sub>Chrisetc</sub>
<sub>Christal</sub>
<sub>Chrystal</sub>
<sub>Cristal</sub>
</expansion>
<expansion>
<sub>Cynthia</sub>
<sub>Cindy</sub>
</expansion>
<expansion>
<sub>Daniel</sub>
<sub>Dan</sub>
<sub>Danny</sub>
</expansion>
<expansion>
<sub>Danielle</sub>
<sub>Dani</sub>
</expansion>
<expansion>
<sub>David</sub>
<sub>Davy</sub>
<sub>Davey</sub>
<sub>Dave</sub>
</expansion>
<expansion>
<sub>Deborah</sub>
<sub>Deb</sub>
<sub>Debi</sub>
<sub>Debbie</sub>
<sub>Debby</sub>
</expansion>
<expansion>
<sub>Denise</sub>
<sub>Dennis</sub>
</expansion>
<expansion>
<sub>Diane</sub>
<sub>Diana</sub>
<sub>Di</sub>
</expansion>
<expansion>
<sub>Dorothy</sub>
<sub>Dee</sub>
<sub>Dolly</sub>
<sub>Dorothea</sub>
<sub>Dot</sub>
<sub>Dotha</sub>
<sub>Dotty</sub>
</expansion>
<expansion>
<sub>Douglas</sub>
<sub>Doug</sub>
</expansion>
<expansion>
<sub>Edward</sub>
<sub>Ed</sub>
<sub>Eddie</sub>
<sub>Eddy</sub>
</expansion>
<expansion>
<sub>Elias</sub>
<sub>Eli</sub>
<sub>Elijah</sub>
<sub>Elisha</sub>
<sub>Ellis</sub>
</expansion>
<expansion>
<sub>Elisa</sub>
<sub>Lisa</sub>
</expansion>
<expansion>
<sub>Eliza</sub>
<sub>Elizabeth</sub>
<sub>Beth</sub>
<sub>Liz</sub>
<sub>Liza</sub>
<sub>Lizabeth</sub>
<sub>Lizzie</sub>
</expansion>
<expansion>
<sub>Emanuel</sub>
<sub>Manny</sub>
<sub>Manuel</sub>
</expansion>
<expansion>
<sub>Emeline</sub>
<sub>Emmer</sub>
<sub>Emily</sub>
<sub>Emmy</sub>
<sub>Emilie</sub>
</expansion>
<expansion>
<sub>Ernest</sub>
<sub>Earnest</sub>
<sub>Ernie</sub>
<sub>Ernestine</sub>
</expansion>
<expansion>
<sub>Estella</sub>
<sub>Stella</sub>
</expansion>
<expansion>
<sub>Eugene</sub>
<sub>Gene</sub>
<sub>Eugenia</sub>
<sub>Genie</sub>
</expansion>
<expansion>
<sub>Evelyn</sub>
<sub>Ev</sub>
<sub>Eve</sub>
<sub>Evelina</sub>
</expansion>
<expansion>
<sub>Ezekiel</sub>
<sub>Ez</sub>
</expansion>
<expansion>
<sub>Frances</sub>
<sub>Fan</sub>
<sub>Fanny</sub>
<sub>Fran</sub>
<sub>Franie</sub>
<sub>France</sub>
<sub>Franz</sub>
<sub>Francis</sub>
</expansion>
<expansion>
<sub>Franklin</sub>
<sub>Frank</sub>
<sub>Frankie</sub>
<sub>Franky</sub>
</expansion>
<expansion>
<sub>Frederick</sub>
<sub>Fred</sub>
<sub>Fredric</sub>
<sub>Freddie</sub>
</expansion>
<expansion>
<sub>Gabriel</sub>
<sub>Gabe</sub>
<sub>Gabby</sub>
<sub>Garbrielle</sub>
<sub>Gabbie</sub>
</expansion>
<expansion>
<sub>Geoffrey</sub>
<sub>Jeff</sub>
<sub>Geoff</sub>
<sub>Jeffrey</sub>
</expansion>
<expansion>
<sub>George</sub>
<sub>Jorge</sub>
<sub>Georgia</sub>
<sub>Georgiana</sub>
</expansion>
<expansion>
<sub>Gerald</sub>
<sub>Jerry</sub>
<sub>Geraldine</sub>
<sub>Gerry</sub>
<sub>Gerri</sub>
<sub>Gerrie</sub>
</expansion>
<expansion>
<sub>Gertrude</sub>
<sub>Gertie</sub>
<sub>Trudy</sub>
</expansion>
<expansion>
<sub>Gilbert</sub>
<sub>Gil</sub>
<sub>Gill</sub>
</expansion>
<expansion>
<sub>Gloria</sub>
<sub>Glory</sub>
</expansion>
<expansion>
<sub>Gregory</sub>
<sub>Greg</sub>
</expansion>
<expansion>
<sub>Gwendolyn</sub>
<sub>Gwenny</sub>
<sub>Gwen</sub>
<sub>Gwennie</sub>
</expansion>
<expansion>
<sub>Hannah</sub>
<sub>Hanna</sub>
<sub>Hanne</sub>
</expansion>
<expansion>
<sub>Harold</sub>
<sub>Hal</sub>
<sub>Harry</sub>
</expansion>
<expansion>
<sub>Henry</sub>
<sub>Hank</sub>
</expansion>
<expansion>
<sub>Herbert</sub>
<sub>Herb</sub>
</expansion>
<expansion>
<sub>Irvin</sub>
<sub>Irving</sub>
</expansion>
<expansion>
<sub>Irwin</sub>
<sub>Erwin</sub>
</expansion>
<expansion>
<sub>Isaac</sub>
<sub>Ike</sub>
<sub>Zeke</sub>
</expansion>
<expansion>
<sub>Isabelle</sub>
<sub>Isabella</sub>
<sub>Bella</sub>
<sub>Belle</sub>
</expansion>
<expansion>
<sub>Jacob</sub>
<sub>Jake</sub>
</expansion>
<expansion>
<sub>Jacqueline</sub>
<sub>Jackie</sub>
</expansion>
<expansion>
<sub>James</sub>
<sub>Jamie</sub>
<sub>Jim</sub>
</expansion>
<expansion>
<sub>Jane</sub>
<sub>Janet</sub>
<sub>Janette</sub>
<sub>Janie</sub>
<sub>Jan</sub>
</expansion>
<expansion>
<sub>Jeanette</sub>
<sub>Jeanne</sub>
</expansion>
<expansion>
<sub>Jennifer</sub>
<sub>Jen</sub>
<sub>Jenny</sub>
</expansion>
<expansion>
<sub>Jeremiah</sub>
<sub>Jeremy</sub>
</expansion>
<expansion>
<sub>Jessica</sub>
<sub>Jess</sub>
<sub>Jesse</sub>
<sub>Jessie</sub>
</expansion>
<expansion>
<sub>Joanna</sub>
<sub>Joan</sub>
<sub>Jody</sub>
<sub>Johanna</sub>
</expansion>
<expansion>
<sub>Jonathan</sub>
<sub>Johnathan</sub>
<sub>John</sub>
<sub>Jack</sub>
<sub>Jackson</sub>
<sub>Jehu</sub>
<sub>Johnny</sub>
<sub>Jon</sub>
</expansion>
<expansion>
<sub>Joseph</sub>
<sub>Joe</sub>
<sub>Joey</sub>
<sub>Josephine</sub>
<sub>Josepha</sub>
<sub>Jo</sub>
<sub>Josey</sub>
<sub>Josie</sub>
</expansion>
<expansion>
<sub>Joshua</sub>
<sub>Josh</sub>
</expansion>
<expansion>
<sub>Joyce</sub>
<sub>Joy</sub>
</expansion>
<expansion>
<sub>Judith</sub>
<sub>Juda</sub>
<sub>Jude</sub>
<sub>Judi</sub>
<sub>Judie</sub>
<sub>Judy</sub>
</expansion>
<expansion>
<sub>Julia</sub>
<sub>Julie</sub>
<sub>Juliet</sub>
<sub>Julian</sub>
<sub>Julius</sub>
<sub>Jule</sub>
</expansion>
<expansion>
<sub>Karen</sub>
<sub>Karon</sub>
<sub>Karin</sub>
</expansion>
<expansion>
<sub>Kristopher</sub>
<sub>Christopher</sub>
<sub>Chris</sub>
<sub>Topher</sub>
<sub>Toph</sub>
</expansion>
<expansion>
<sub>Lawrence</sub>
<sub>Larry</sub>
<sub>Laurence</sub>
<sub>Lawrie</sub>
<sub>Lon</sub>
<sub>Lorry</sub>
<sub>Laura</sub>
</expansion>
<expansion>
<sub>Leonard</sub>
<sub>Leo</sub>
<sub>Leon</sub>
<sub>Leona</sub>
</expansion>
<expansion>
<sub>LeRoy</sub>
<sub>Lee</sub>
<sub>Roy</sub>
</expansion>
<expansion>
<sub>Leslie</sub>
<sub>Leslea</sub>
</expansion>
<expansion>
<sub>Louis</sub>
<sub>Lewis</sub>
<sub>Lou</sub>
<sub>Louie</sub>
<sub>Louise</sub>
</expansion>
<expansion>
<sub>Marcus</sub>
<sub>Mark</sub>
<sub>Marc</sub>
</expansion>
<expansion>
<sub>Mariah</sub>
<sub>Maria</sub>
</expansion>
<expansion>
<sub>Mary</sub>
<sub>Mari</sub>
<sub>Marian</sub>
<sub>Marianna</sub>
<sub>Marion</sub>
</expansion>
<expansion>
<sub>Marjorie</sub>
<sub>Madge</sub>
<sub>Marge</sub>
<sub>Margie</sub>
</expansion>
<expansion>
<sub>Marcy</sub>
<sub>Marcie</sub>
</expansion>
<expansion>
<sub>Marvin</sub>
<sub>Marv</sub>
<sub>Merv</sub>
<sub>Mervyn</sub>
</expansion>
<expansion>
<sub>Matthew</sub>
<sub>Matt</sub>
<sub>Matthias</sub>
</expansion>
<expansion>
<sub>Maxine</sub>
<sub>Max</sub>
<sub>Maxwell</sub>
</expansion>
<expansion>
<sub>May</sub>
<sub>Mae</sub>
</expansion>
<expansion>
<sub>Michael</sub>
<sub>Mickey</sub>
<sub>Mike</sub>
</expansion>
<expansion>
<sub>Mitchell</sub>
<sub>Mitch</sub>
</expansion>
<expansion>
<sub>Montgomery</sub>
<sub>Monty</sub>
</expansion>
<expansion>
<sub>Mortimer</sub>
<sub>Mort</sub>
</expansion>
<expansion>
<sub>Natalie</sub>
<sub>Nat</sub>
</expansion>
<expansion>
<sub>Nicholas</sub>
<sub>Nick</sub>
<sub>Nicky</sub>
</expansion>
<expansion>
<sub>Nicole</sub>
<sub>Nikki</sub>
</expansion>
<expansion>
<sub>Patricia</sub>
<sub>Pattie</sub>
<sub>Patty</sub>
<sub>Patrick</sub>
<sub>Pat</sub>
</expansion>
<expansion>
<sub>Philip</sub>
<sub>Filip</sub>
<sub>Phil</sub>
<sub>Philippa</sub>
</expansion>
<expansion>
<sub>Rae</sub>
<sub>Ray</sub>
</expansion>
<expansion>
<sub>Randolph</sub>
<sub>Randall</sub>
<sub>Randy</sub>
</expansion>
<expansion>
<sub>Rebecca</sub>
<sub>Becca</sub>
<sub>Beckie</sub>
<sub>Becky</sub>
<sub>Reba</sub>
</expansion>
<expansion>
<sub>Reginald</sub>
<sub>Reg</sub>
<sub>Reggie</sub>
</expansion>
<expansion>
<sub>Richard</sub>
<sub>Dick</sub>
<sub>Rich</sub>
<sub>Richie</sub>
<sub>Rick</sub>
<sub>Ritchie</sub>
</expansion>
<expansion>
<sub>Robert</sub>
<sub>Dob</sub>
<sub>Dobbin</sub>
<sub>Bob</sub>
<sub>Bobby</sub>
<sub>Rob</sub>
<sub>Robin</sub>
<sub>Rupert</sub>
<sub>Roberta</sub>
<sub>Robbie</sub>
<sub>Robby</sub>
<sub>Bobbie</sub>
</expansion>
<expansion>
<sub>Roxane</sub>
<sub>Roxy</sub>
<sub>Roxie</sub>
</expansion>
<expansion>
<sub>Ryan</sub>
<sub>Ry</sub>
<sub>Rian</sub>
</expansion>
<expansion>
<sub>Samantha</sub>
<sub>Mantha</sub>
<sub>Sammy</sub>
<sub>Samson</sub>
<sub>Sampson</sub>
<sub>Sam</sub>
<sub>Samuel</sub>
</expansion>
<expansion>
<sub>Sandra</sub>
<sub>Sandy</sub>
</expansion>
<expansion>
<sub>Sarah</sub>
<sub>Cera</sub>
<sub>Sara</sub>
</expansion>
<expansion>
<sub>Scott</sub>
<sub>Sceeter</sub>
<sub>Squat</sub>
<sub>Scottie</sub>
<sub>Scotty</sub>
</expansion>
<expansion>
<sub>Simeon</sub>
<sub>Sim</sub>
<sub>Simon</sub>
</expansion>
<expansion>
<sub>Stan</sub>
<sub>Stanley</sub>
</expansion>
<expansion>
<sub>Stephanie</sub>
<sub>Steph</sub>
<sub>Stephie</sub>
</expansion>
<expansion>
<sub>Stephen</sub>
<sub>Steve</sub>
<sub>Steven</sub>
<sub>Stevie</sub>
</expansion>
<expansion>
<sub>Teresa</sub>
<sub>Terry</sub>
<sub>Tessie</sub>
</expansion>
<expansion>
<sub>Theodore</sub>
<sub>Ted</sub>
<sub>Theodora</sub>
<sub>Theo</sub>
<sub>Theophilus</sub>
</expansion>
<expansion>
<sub>Thomas</sub>
<sub>Thom</sub>
<sub>Tom</sub>
</expansion>
<expansion>
<sub>Tiffany</sub>
<sub>Tiff</sub>
<sub>Tiffy</sub>
</expansion>
<expansion>
<sub>Timothy</sub>
<sub>Tim</sub>
<sub>Timmy</sub>
</expansion>
<expansion>
<sub>Ty</sub>
<sub>Tie</sub>
<sub>Tye</sub>
</expansion>
<expansion>
<sub>Victor</sub>
<sub>Vic</sub>
<sub>Vick</sub>
</expansion>
<expansion>
<sub>Victoria</sub>
<sub>Toria</sub>
<sub>Torrie</sub>
<sub>Tory</sub>
<sub>Vicki</sub>
</expansion>
<expansion>
<sub>Vincent</sub>
<sub>Vin</sub>
<sub>Vince</sub>
<sub>Vinnie</sub>
<sub>Vinny</sub>
</expansion>
<expansion>
<sub>Wallace</sub>
<sub>Wallie</sub>
<sub>Wally</sub>
</expansion>
<expansion>
<sub>Walter</sub>
<sub>Walt</sub>
</expansion>
<expansion>
<sub>Wilhelmina</sub>
<sub>Helmie</sub>
<sub>Mina</sub>
<sub>Minnie</sub>
<sub>Willie</sub>
<sub>Wilma</sub>
<sub>Wilhelm</sub>
<sub>William</sub>
<sub>Bill</sub>
<sub>Bud</sub>
<sub>Will</sub>
<sub>Willis</sub>
<sub>Willy</sub>
<sub>Billie</sub>
</expansion>
<expansion>
<sub>Wilfred</sub>
<sub>Winifred</sub>
<sub>Winnie</sub>
<sub>Winnet</sub>
</expansion>
<expansion>
<sub>Woodrow</sub>
<sub>Woody</sub>
</expansion>
<expansion>
<sub>Zachariah</sub>
<sub>Zach</sub>
<sub>Zacharias</sub>
<sub>Zachary</sub>
<sub>Zak</sub>
<sub>Zac</sub>
</expansion>
<!--End Names-->
</thesaurus>
</XML>
Labels:
example,
FTS,
Full Text Search,
SQL Server,
SQL Server 2008,
Thesaurus,
tsENU.xml
20091028
SQL Server 2005 Full Text Search FTS Thesaurus tsENU.xml issues
Been spending time reading up on SQL Server 2005 FTS Thesaurus files here is what I've learned:
- You have to make your own Thesaurus file, can't seem to find one with common expansions.
- When you have finished your new file, you need to restart SQL 2005 (if it's 2008 there's a stored procedure to reload it "EXEC sys.sp_fulltext_load_thesaurus_file 1033;" 1033 for the language in this case ENU (US English).
- Make sure your search terms are not surrounded by double quotes because you thought they were necessary from a previous hacked together project using SQL FTS.
- Run tests and query comparisons to make sure it's working the way you think it should.
- Wonder about all the other predicates you can add to your search terms because you can't find a definitive list.
FREETEXT(<FieldNames>,formsof(thesaurus,<searchterms>))
FREETEXT(<FieldNames>,'"<SearchTerm_1>" NEAR "<SearchTerm_2>"')
FREETEXT(<FieldNames>,'isabout("<SearchTerm_1>" weight(<DecimalWeightValue_1>), <SearchTerm_2> weight(DecimalWeightValue_2>))')
FREETEXT(<FieldNames>, '<SearchTerm>', LANGUAGE <LanguageCode>) [for a list of language codes "select [name], alias, lcid from master.sys.syslanguages", use the lcid field] - If you're having problems getting the Thesaurus to appear to work, try using these to look at language settings
exec sp_configure 'default language'
SELECT @@language, @@langid
select [name], alias, lcid from master.sys.syslanguages - You may end up with lots of web pages open, maybe some of them are actually helpful:
http://www.mssqltips.com/tip.asp?tip=1491
http://msdn.microsoft.com/en-us/library/ms345187.aspx
http://msdn.microsoft.com/en-us/library/ms345186.aspx
http://www.mssqltips.com/tip.asp?tip=1353
http://www.mssqltips.com/tip.asp?tip=1342
http://www.mssqltips.com/tip.asp?tip=1332
http://www.ureader.com/msg/1147186.aspx
http://msdn.microsoft.com/en-us/library/cc280598.aspx
http://msdn.microsoft.com/en-us/library/ms176076.aspx
http://blogs.geekdojo.net/richard/archive/2006/09/01/13805.aspx (this one is funny as well, which can be nice after not finding anything that seems useful)
http://www.eggheadcafe.com/community/aspnet/13/10024815/need-help-on-sql-server-2.aspx (this one seems useful until you realize that there are no replies with answers)
http://arcanecode.com/2008/05/28/creating-custom-thesaurus-entries-in-sql-server-2005-and-2008-full-text-search/
http://arcanecode.com/2008/04/29/sql-server-full-text-search-the-fulltextcatalogproperty-function/
http://www.simple-talk.com/sql/learn-sql-server/sql-server-full-text-search-language-features/ - You finally get a sample working, then you realize you need to build a full list of all the Expansions and Substitutions you want.
Labels:
example,
expansions,
FREETEXT,
FTS,
Full Text Search,
SQL Server,
SQL Server 2005,
substitutions,
Thesaurus
Subscribe to:
Posts (Atom)