Назад | Перейти на главную страницу

Поиск SharePoint: обработка имен файлов, содержащих символы подчеркивания

Мы используем SharePoint Server 2007, чтобы позволить сотрудникам выполнять поиск в общих сетевых папках, но кажется, что подчеркивание в именах файлов не обрабатывается как разделители слов при индексировании файлов.

В результате поиск шоколад воля:

(Конечно, это упрощенный пример; на практике содержание второго файла может включать слово «шоколад» и совпадать с ним вместо имени файла. Но сама проблема достаточно реальна, потому что распространенный сценарий в корпоративной среде состоит в том, что пользователь знает частичное имя файла, который он ищет, и ожидает увидеть совпадающие имена файлов в верхней части результатов поиска. И использование подчеркивания в именах файлов - широко используемое соглашение в нашей компании).

Подчеркивание также не рассматривается как разделитель слов в содержимом файла, хотя нас это не беспокоит. Основная причина этой проблемы - возможно связанных с поведением средств разбиения по словам, используемых SharePoint (то есть языковых библиотек DLL, реализующих интерфейс IWorkBreaker), хотя я еще не подтвердил это.

Кто-нибудь знает способ решения этой проблемы? Я также тестировал Search Server 2008 Express (который основан на той же технологии), и он тоже пострадал. Не знаю, исправлена ​​ли проблема в SharePoint 2010 или нет.

Я подтвердил, что средство разбиения по словам определяет обработку подчеркивания как для содержимого документа, так и для имен файлов. Средства разбиения по словам настраиваются в реестре для каждого языка.

Средства разбиения по словам реализованы в виде элементов управления ActiveX, и теоретически должно быть возможно написать свои собственные (Microsoft Platform SDK для Windows XP включает пример «lrsample»), но у меня нет инструментов для этого. Кажется, что многие средства разбиения по словам, поставляемые Microsoft, рассматривают символы подчеркивания как часть слова, но я нашел один, который разбивает символы подчеркивания: версия 2 средства разбиения по словам для упрощенного китайского языка (chsbrkr.dll - 1,677 824 байта). Обратите внимание, что это поведение отличается от версии 3 средства разбиения по словам на упрощенном китайском, которое поставляется с Search Server 2008 Express и, вероятно, с SharePoint 2007 тоже.

Итак, чтобы получить желаемое поведение при поиске, я настроил поиск SharePoint для использования этого средства разбиения по словам:

  1. Скопируйте DLL в C: \ Program Files \ Microsoft Office Servers \ 12.0 \ Bin \ chsbrkr2.dll
  2. Используйте regedit, чтобы перейти к HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Office Server \ 12.0 \ Search \ Setup \ ContentIndexCommon \ LanguageResources \ Default
  3. Для соответствующих языков, в моем случае «Английский (Великобритания)» и «Английский (США)», измените следующие ключи: "WBDLLPathOverride" = "C:\PROGRA~1\MI54E7~1\12.0\Bin\ChsBrkr2.dll" (ваш путь может быть другим) и "WBreakerClass" = "{9717fc70-c1bc-11d0-9692-00a0c908146e}"
  4. Перезапустите службу «Office SharePoint Server Search» (это можно сделать из командной строки, запустив net stop osearch с последующим net start osearch).
  5. Перейдите на страницу администрирования поиска и начните полное сканирование.

Помимо обработки символов подчеркивания как разрыва слова, я не уверен, есть ли какие-либо другие существенные различия между chsbrkr.dll и стандартным английским средством разбиения по словам, но пока это не вызвало у меня никаких проблем. Было бы замечательно, если бы существовал способ применить настраиваемое средство разбиения по словам к определенным управляемым свойствам (в данном случае Path), но я не знаю, возможно ли это. В таблице MSSManagedProperties базы данных есть столбец с многообещающим названием «WordBreakerOverride», но я не знаю, какова его цель.

НОТА: В SharePoint 2010 управляемые свойства, по-видимому, имеют дополнительный параметр SplitStringCharacters, который вполне может сделать этот обходной путь устаревшим.

Я не думаю, что символы подчеркивания рассматриваются как разделители, и небольшой трафик на social.technet, кажется, подтверждает это. Если (с тех пор) это так, вам понадобится частичный поиск или поиск с подстановочными знаками, чтобы найти «шоколад» из «chocolate_cake.doc», чего не будет делать основная веб-часть результатов. Однако есть кодовый комплекс веб-часть в 2007 году это именно так.

К вашему сведению, Версия 2010 г. этой же веб-части отмечает, что SharePoint 2010 добавляет поиск с использованием подстановочных знаков при условии, что пользователь вводит звездочку.