Я играю в базе данных AdventureWorks с полнотекстовым поиском.В production.ProductDescription я пытаюсь найти слова «гора» и «замены».
Я знаю, что есть запись со следующим описанием:
High-performance mountain replacement wheel.
Мой первый обход был:
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;
Возвращено 0 строк.Если я заменю «замена ГОРЯЧЕГО РЯДА» на «замена ГОРЯЧЕГО РЯДА», я получаю ожидаемую запись в результирующем наборе данных.
Моя следующая попытка состояла в том, чтобы попробовать что-то вроде следующего:
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;
, но это приводит к ошибке
Syntax error near 'NEAR' in the full-text search condition 'FORMSOF(INFLECTIONAL, "replacements") NEAR "mountain"'.
Я посмотрел на грамматику для CONTAINSTABLE иоказывается, что в одном и том же условии поиска вы не можете использовать generation_term (например, FORMSOF ()) и термин близости (например, NEAR).
Я добавил в таблицу следующую запись:
Replacement parts for you omg gee-whiz mountain
Эта запись занимает высокое место (96) в следующем запросе fts:
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;
, но, как и ожидалось, ниже (32) в этом запросе:
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;
Для этогоПридуманный пример, я бы хотел, чтобы пользователь мог предоставить гору условий поиска и замены, и чтобы он возвращал записи с относительно высоким рангом для записей, которые содержат замены и гору рядом друг с другом, но затрудняется, как туда добраться.