Доброго времени,
по какой-то причине FREETEXT не учитывает словоформы русского языка (с английским все нормально).
вот пример по аналогии с этим
пример с simple-talk
IF OBJECT_ID (N'StormyWeatherRU', N'U') IS NOT NULL
DROP TABLE StormyWeatherRU
GO
CREATE TABLE StormyWeatherRU (
StormID INT NOT NULL IDENTITY,
StormHead NVARCHAR(50) NOT NULL,
StormBody NVARCHAR(MAX) NOT NULL,
CONSTRAINT [PK_StormyWeatherRU_StormID] PRIMARY KEY CLUSTERED (StormID ASC)
)
GO
INSERT INTO StormyWeatherRU (StormHead, StormBody)
VALUES('штормовая погода задерживает путешествие',
'Штормовая погода делает прогулки на моторных лодках опасными')
INSERT INTO StormyWeatherRU (StormHead, StormBody)
VALUES('Штормовая погода в понедельник',
'Штормовая погода делает поездку на моторных лодках опасной, особенно в понедельник')
INSERT INTO StormyWeatherRU (StormHead, StormBody)
VALUES('Штормовая погода в декабре',
'В декабре может быть наибольшое количество штормов, это затрудняет путешествие даже на автомобиле')
INSERT INTO StormyWeatherRU (StormHead, StormBody)
VALUES('Шторм растет',
'Штормовой ветер сильно вырос.')
INSERT INTO StormyWeatherRU (StormHead, StormBody)
VALUES('Шторм пересекает тихий океан',
'шторм проходит над тихим океаном.')
GO
INSERT INTO StormyWeatherRU (StormHead, StormBody)
VALUES('Шторма лютуют',
'Шторма лютуют над Тихим океаном, сильно мешают Федору Конюхову.')
GO
CREATE FULLTEXT CATALOG ftcStormyWeatherRU
GO
CREATE FULLTEXT INDEX ON StormyWeatherRU(StormHead Language 'RUSSIAN', StormBody Language 'RUSSIAN')
KEY INDEX PK_StormyWeatherRU_StormID
ON ftcStormyWeatherRU
WITH CHANGE_TRACKING AUTO
GO
SELECT StormID, StormHead, StormBody FROM StormyWeatherRU
WHERE FREETEXT(StormHead, 'шторм')
GO
SELECT StormID, StormHead, StormBody FROM StormyWeatherRU
WHERE CONTAINS(StormHead, 'FORMSOF(INFLECTIONAL, шторм)')
-- возвращают одно и тоже
-- 4 Шторм растет Штормовой ветер сильно вырос.
-- 5 Шторм пересекает тихий океан шторм проходит над тихим океаном.
вопрос почему не находит: 'Шторма лютуют' и многочисленные 'Штормовая...', что я не докрутил?
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
в качестве up дополнение: в реестре для стриммера забита NaturalLanguage6.dll,
так и должно быть?
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
up
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Здравствуйте, cadet354, Вы писали:
C>вопрос почему не находит: 'Шторма лютуют' и многочисленные 'Штормовая...', что я не докрутил?
проблема обнаружилась в неудачно подобранном примере:
select *from sys.dm_fts_parser
(N'FORMSOF(FREETEXT, шторм)',1049, NULL,0)
-- возвращает только одну словоформу, само слово: шторм,
-- для сравнения:
select * from sys.dm_fts_parser
(N'FORMSOF(FREETEXT, лодка)',1049, NULL,0)
--возвращает 9 различных форм
можно ли как-то на это повлиять, на синонимы и стоп слова можно, а на словоформы?
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Здравствуйте, cadet354, Вы писали:
C>можно ли как-то на это повлиять, на синонимы и стоп слова можно, а на словоформы?
Только покупными стеммерами. искать по russian IStemmer (или просто stemmer)
Или искать по префиксу (штор*). Особенно удобно при горячем поиске (с автовыдачей результатов). Только не забудьте TOP добавить