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

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

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

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

  • соответствовать "шоколадмолочный коктейль.doc"
  • но не соответствует "chocolate_cake.doc"

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

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

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

решение1

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

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

решение2

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

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

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

  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» (это можно сделать через командную строку, выполнив команду , net stop osearchа затем net start osearch).
  5. Перейдите на страницу администрирования поиска и запустите полное сканирование.

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

ПРИМЕЧАНИЕ:В SharePoint 2010 управляемые свойства, по-видимому, имеют дополнительный параметр, называемый SplitStringCharacters, что вполне может сделать этот обходной путь устаревшим.

Связанный контент