SQL server 2012 Volltextsuche, können Sie NEAR verwenden, um 'dave oder david smith' zu entsprechen?

Ich habe diese Frage:

select * from catnames where contains(name, 'NEAR((david, smith), MAX, TRUE)')

Was passiert David Smith, wo die Begriffe erscheinen in Ordnung.

Ich frage mich, ob es möglich ist, david OR Dave Smith in der gleichen Abfrage zu überprüfen. Die Dokumentation für CONTAINS und NEAR ist ein wenig verwirrend. Ich habe mit ein paar Versuchen herumgespielt, meistens versuche, 'ODER' hinzuzufügen, aber keine Würfel.

Ist es möglich?

(Bearbeiten: Offensichtlich meine ich in einem einzigen ENTHÄLT, anstatt beide CONTAINs zu verketten)

Verwenden Sie einen ODER-Operator in Ihrer Volltextsuche.

select * from catnames where contains(name, 'NEAR((david, smith), MAX, TRUE) OR NEAR((dave, smith), MAX, TRUE)')

Sie könnten auch den Volltextsuche-Thesaurus verwenden, um anzuzeigen, dass "David" und "Dave" Synonyme sind und daher die OR-Klausel nicht benötigen würden. Der Thesaurus erlaubt Ihnen, Ersatzausdrücke und Erweiterungsbedingungen zu deklarieren. Für Ihren Fall würden Sie einen Expansionsbegriff verwenden. Der Eintrag in der XML-Thesaurus-file (da ist eine Sprache) würde so aussehen:

 <expansion> <sub>David</sub> <sub>Dave</sub> </expansion> 

Sehen Sie hier für weitere Informationen über Thesaurus-fileen in SQL server 2012.