0

У меня есть таблица SQL с 60 миллионами записей с 2 ​​столбцами: ID и Hash.SQL Server 2012 - Полнотекстовый поиск по полю nvarchar с хэшами SHA не возвращает ничего

ID является инкрементным int PK.

Hash - это поле nvarchar с индексом.

Я создал полнотекстовой индекс на поле Hash, как это:

CREATE FULLTEXT CATALOG hashes_catalog; 
GO 
CREATE FULLTEXT INDEX 
    ON dbo.hashes(hash LANGUAGE 1033) 
    KEY INDEX IXC_Hash ON hashes_catalog; 
GO 

Но когда я пытаюсь сделать полнотекстовый поиск не дал результатов, например:

SELECT * FROM Hashes WHERE CONTAINS(hash,'1CE') 

возвращает ничего.

Но данные, как это существует, это некоторая выборка данных из таблицы:

1CefATjZSfzDK1bn15tFv5EHzQtxmCkNQL 
1CEfatKXLUomearrh7JyKgv4w1Ci1jxM8B 
1CefAtyhBVXda5324NwTkfBMkEZ9YcF6vN 
1CEfAUbiB2AfqjGpg8r8hxuAxTdzrDPGmv 
1CEFAUzKC2Ffi8HwMSfkqTDN8deBTjXnrD 
1CEfavd9sVZmLsez8JHKUHHZ7ZEAaKbp6W 
1CEFAVfD55it65d6MdQpo3mnnBhBviLTh4 
1CEfAVjjGrBQCkLh6qBEfwX46G213DnNhc 
1Cefavph9RxQdLfasHR25B3P9W98tCGGus 
1CEfavqq739Ny9sH7F1qCS5GzSpVB1Yz5g 
1CEFAw68XLVRwzQSP7HNW4kd5z3JRdcPgU 

Если я исполняю

SELECT * FROM Hashes WHERE Hash like '%1CE%' 

Есть 129184 результатов.

Любые идеи по размещению полнотекстового поиска для таких полей? Возможно ли это?

ответ

1

Если хэш начинается с этого срока, то вы можете использовать следующий синтаксис:

SELECT * FROM Hashes WHERE CONTAINS(hash,'"1CE*"') 

Полнотекстовый поиск, вероятно, не лучший выбор для поисков такого рода. Он работает путем токенизации вашего текста, и если весь текст в поле находится в одном «слове» (без пунктуации), нет никакого основного преимущества использования полнотекстового текста по сравнению с LIKE.

Смежные вопросы