Ich spiele in der AdventureWorks Datenbank mit Volltextsuche. In der production.ProductDescription versuche ich nach "mountain" und "replacements" zu suchen.Ist es möglich, eine Flexions- und Umgebungssuche in einer einzigen CONTAINSTABLE-Suchbedingung zu kombinieren?
Ich weiß, es ist ein Rekord mit der folgenden Beschreibung:
High-performance mountain replacement wheel.
Mein erstes gehen um, war dies:
SELECT
pd.Description,
ct.RANK
FROM Production.ProductDescription AS pd
INNER JOIN CONTAINSTABLE(
Production.ProductDescription,
Description,
'mountain NEAR replacements'
) AS ct ON pd.ProductDescriptionID = ct.[KEY]
ORDER BY ct.RANK DESC;
Diese Zeilen 0 zurückgegeben. Wenn ich "Mountain NEAR Replacements" zu "Mountain NEAR Replacement" ändere, bekomme ich den Datensatz, den ich in dem resultierenden Datensatz erwarte.
Mein war nächsten Versuch, etwas wie folgt aus, um zu versuchen:
SELECT
pd.Description,
ct.RANK
FROM Production.ProductDescription AS pd
INNER JOIN CONTAINSTABLE(
Production.ProductDescription,
Description,
'FORMSOF(INFLECTIONAL, "replacements") NEAR "mountain"'
) AS ct ON pd.ProductDescriptionID = ct.[KEY]
ORDER BY ct.RANK DESC;
aber dies erzeugt den Fehler
Syntax error near 'NEAR' in the full-text search condition 'FORMSOF(INFLECTIONAL, "replacements") NEAR "mountain"'.
ich an der Grammatik für CONTAINS einen Blick hatte und es stellt sich heraus, dass Sie habe keinen generation_term (zB FORMSOF()) und einen proximity-Term (zB NEAR) in der gleichen Suchbedingung.
Ich habe den folgenden Datensatz zur Tabelle:
Replacement parts for you omg gee-whiz mountain
Das Rekordhoch (96) in der folgenden fts Abfrage zählt:
SELECT
pd.Description,
ct.RANK
FROM Production.ProductDescription AS pd
INNER JOIN CONTAINSTABLE(
Production.ProductDescription,
Description,
'FORMSOF(INFLECTIONAL,"replacements") AND "mountain"'
) AS ct ON pd.ProductDescriptionID = ct.[KEY]
ORDER BY ct.RANK DESC;
aber wie erwartet Ränge niedriger (32) in dieser query:
SELECT
pd.Description,
ct.RANK
FROM Production.ProductDescription AS pd
INNER JOIN CONTAINSTABLE(
Production.ProductDescription,
Description,
'"replacement" NEAR "mountain"'
) AS ct ON pd.ProductDescriptionID = ct.[KEY]
ORDER BY ct.RANK DESC;
Für dieses erfundene Beispiel, würde ich einen Benutzer mag in der Lage sein, die Suche te zur Verfügung zu stellen RMS Berg und Ersatz und haben es Rekorde mit einem relativ hohen Rang für Datensätze, die Ersatz und Berg nahe beieinander enthalten, aber nicht zur Verfügung, wie man dorthin kommt.