Поиск в пользовательских профилях не работает на локализованных значениях в SharePoint 2013

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/80890

Вопрос

Поиск в профилях пользователей не работает над локализованными значениями на SharePoint 2013

привет! Я из России и вчера я пытался поиск пользовательских профилей русским языком. Например, моя фамилия - Мурадов и имя учетной записи - Демо \ Мурадов. Я могу найти себя путем поиска «демонстрация», «Мурадов», но я не могу найти себя «Мурадов».

Введите описание изображения здесь Введите описание изображения здесь

Для поиска я использовал страницу управления профилями пользователя из центра администрирования и userprofilemanager.search () метода из кода. Я решил выяснить, почему это происходит.

Я был декомпилировал microsoft.office.server.userprofiles Сборка и увидела, что UserProfileManager.search () метод использует сохраненную процедуру DBO.PROC_PROFILE_Searchuser .

Введите описание изображения здесь Введите описание изображения здесь

Управление профилями пользователей, используемых этой процедуры тоже (я проверял его с помощью SQL Server Profiler). Я использовал SQL Server Profiler и нашел вызов процедуры, кажется, что

exec dbo.proc_Profile_SearchUser @partitionID='0c37852b-34d0-418e-91c6-2ac25af4be5b',@correlationId='00000000-0000-0000-0000-000000000000',@Term1=N'demo'  
.

И было интересно, потому что

exec dbo.proc_Profile_SearchUser @partitionID='0c37852b-34d0-418e-91c6-2ac25af4be5b',@correlationId='00000000-0000-0000-0000-000000000000',@Term1=N'muradov' - retrieved my profile

exec dbo.proc_Profile_SearchUser @partitionID='0c37852b-34d0-418e-91c6-2ac25af4be5b',@correlationId='00000000-0000-0000-0000-000000000000',@Term1=N'Мурадов' - my profile not found
.

Я открываю код для dbo.proc_profile_searchuser и начните расследовать ... и нашел, что есть таблица dbo.profile_searchusertermstats , который хранит мою фамилию как <сильный > «У? Я изменил ценность "???????? Для «Мурадов» в DBO.PROFILE_SEARCHUSERTERMSTATS Таблица и вызов DBO.PROC_PROFILE_Searchuser - Он нашел с параметром поиска как «Мурадов»! UserProfiLemanager.Search () и управление страницей профилей пользователей нашла меня. Но, если я редактирую свой профиль и спасти его, мои россияне ценности снова будут как «???????».

Я думал, что проблема в сопоставлении SQL Server (она была latin1_general_ci_as_ks_ws), а я удаляю sqlserver и установку с сопоставлением cyrillic_general_ci_as. Но все базы данных SharePoint были созданы с помощью latin1_general_ci_as_ks_ws collation.

Теперь я застрял. Я понятия не имею, что именно я должен сделать с этим, и мне нужна помощь.

UPD. Я работаю с Windows Server 2012 STNDART с российским языком, также я устанавливаю российскую локаль в ОС (даже я меняю локаль на английский (США) - это не помогает, я не помогает попробовал)

conf2. я нашел таблицу userprofilevalue, который хранит значения профиля как sql_variant и когда этот столбец конвертирует в nvarchar (4000) - есть правильные значения («муадов»). ???? '). Даже если я попробую пройти следующее: Выберите «Мурадов» - результат как «??????», но Выберите N'MuRADOV '- результат как «мудав» Проблема еще не решена.

Это было полезно?

Решение

I have found bug related with this behavior. Steps to fix them:

  1. Open [dbo].[proc_Profile_SetSearchUserTerms] procedure
  2. Check @changedValues declaration (varchar)
  3. Alter procedure with
    DECLARE @changedValues TABLE (PropertyValue nvarchar(255), Direction int)
  4. Be happy.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top