Эй, у меня есть несколько проблем с моим решением, и я не могу понять его
Ниже приведена таблица создания
CREATE TABLE FreeTextSearch
(
[ID] BIGINT NOT NULL IDENTITY(1,1),
[Content] VARBINARY(MAX) NOT NULL,
[SubjectClass] VARCHAR(30) NOT NULL,
[SubjectID] VARCHAR(30) NOT NULL,
[ColumnName] VARCHAR(128) NOT NULL,
CONSTRAINT PK_FreeTextSearch PRIMARY KEY (ID)
);
ALTER TABLE FreeTextSearch
Add FileExtension As '.html';
CREATE INDEX FreeTextSearch_SubjectClass
ON FreeTextSearch ([SubjectClass]);
CREATE FULLTEXT CATALOG [freetext_catalog]
CREATE FULLTEXT INDEX ON FreeTextSearch
(
[Content] TYPE COLUMN FileExtension
)
KEY INDEX PK_FreeTextSearch ON freetext_catalog;
Это создаст таблицу FreeTextSearch с FileExtension из HTML et c.
Данные, преобразованные в VARBINARY, автоматически вставляются в таблицу на основе триггера, но сейчас есть две проблемы
Содержимое, например:
<p>Test note for free text bla!</p>
Не будет обнаружен запросом типа
SELECT
Id,
CONVERT(VARCHAR(MAX), [Content]) AS [Content]
FROM dbo.FreeTextSearch
WHERE FREETEXT ([Content], 'Test')
Дополнительно
SELECT
Id,
CONVERT(VARCHAR(MAX), [Content]) AS [Content]
FROM dbo.FreeTextSearch
Вернет
ID: 1 Content <
ID: 2 Content <
Пока
SELECT
Id,
CONVERT(XML, [Content]) AS [Content]
FROM dbo.FreeTextSearch
вернется
ID: 1 Content: <p>Test note for free text bla!</p>
ID: 2 Content: <p>Something is very wrong with this one i think</p><p>Not really sure what.</p>
Это правильные данные, но неясно, почему
- FREETEXT ничего не находит
- Почему VARCHAR (MAX ) возвращает только <</li>