Как сделать полнотекстовый запрос с AND, когда текст занимает несколько столбцов - PullRequest
0 голосов
/ 15 января 2010

У нас есть таблица с несколькими полнотекстовыми индексированными полями. Скажем, это firstName, surName и lastName. Я ищу «Джона и Смита», и, очевидно, эти два слова, скорее всего, будут написаны в разных областях. Запрос ничего не возвращает. Если я ищу «Джон ИЛИ Смит», он работает.

Вопрос в том, могу ли я как-то сказать SQL Server, что все поля, принадлежащие одной строке конкретной таблицы, должны рассматриваться как один непрерывный фрагмент текста?

Конечно, я могу связать поля вручную со специальным полем и индексировать его, но это выглядит довольно глупо.

На всякий случай запрос. Дело не в имени человека, но идея та же:

SELECT [id], [type], [accessClass], [rank] 
FROM ( 
SELECT DISTINCT temp_result.* 
FROM ( 
    select SDF_Article.article_id [id], 
    6 [type], SDF_Object.accessClass [accessClass], RelevanceTable.[rank] [rank] 
    from SDF_Article inner join SDF_Object SDF_Object 
    on SDF_Article.article_id=SDF_Object.object_id 
    inner join SDF_Article_Locale SDF_Article_Locale 
    on SDF_Article.article_id=SDF_Article_Locale.article 
    inner join ContainsTable(SDF_Article_Locale, (title, body, brief),
    'FORMSOF (INFLECTIONAL, hello) AND FORMSOF (INFLECTIONAL, world)', Language 'Russian') RelevanceTable 
    on SDF_Article_Locale.entry_id=RelevanceTable.[KEY] 
    ) AS temp_result 
INNER JOIN SDF_RelationMap SDF_Map 
ON temp_result.[id] = SDF_Map.object AND SDF_Map.ancestor = 5 ) 
AS result ORDER BY [rank] desc

Мы используем SQL Server 2005.

Ответы [ 2 ]

2 голосов
/ 15 января 2010

Одним из решений является создание автоматически заполненного столбца, который объединяет столбцы, которые вы хотите проиндексировать и найти. Затем укажите полнотекстовый индексатор на этот столбец. Затем вы просто формируете запрос вокруг нового столбца.

0 голосов
/ 25 января 2010

Оказывается, что нет поддержки этого в SQL Server. Более того, такое поведение было «исправлено» в 2004 году: http://support.microsoft.com/default.aspx?scid=kb;en-us;294809

Я добавил предложение в MS Connect. Пожалуйста Поддержи: https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=526862

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...