остановить слова в sitecore - PullRequest
       0

остановить слова в sitecore

8 голосов
/ 02 февраля 2011

Мы используем Lucene для текстового поиска как часть sitecore. Есть ли способ игнорировать стоп-слова (например, a, the, ...) в поиске по сайту?

Ответы [ 2 ]

14 голосов
/ 02 февраля 2011

По умолчанию Sitecore использует стандартный анализатор Lucene - Lucene.Net.Analysis.Standard.StandardAnalyzer.Вы можете видеть, что это определено в /configuration/sitecore/search/analyzer элементе файла web.config.Один из конструкторов класса StandardAnalyzer принимает массив строк, которые он будет считать стоп-словами.По умолчанию он использует жестко закодированный список стоп-слов, который включает:

"a", "an", "и", "are", "as", "at", "be",«но», «by», «for», «if», «in», «into», «is», «it», «no», «not», «of», «on», «or"," такой "," тот "," тот "," их "," тогда "," там "," эти "," они "," этот "," к "," был "," будет ","with"

Если вы хотите переопределить это поведение, я думаю, что вы должны унаследовать StandardAnalyzer и переопределить его конструктор по умолчанию, чтобы получать стоп-слова из другого источника вместо жестко заданного массива.У вас есть различные варианты, даже чтение из текстового файла.Не забудьте заменить стандартный класс вашим в web.config.

См. Другие конструкторы класса StandardAnalyzer для получения более подробной информации. .NET Reflector ваш друг здесь.

4 голосов
/ 17 октября 2013

Пример для сообщения Янса:

public class CaseAnalyzer : Lucene.Net.Analysis.Standard.StandardAnalyzer
{
   private static Hashtable stopWords = new Hashtable(); //{{"by","by"}}; <-- Makes "by" a stopword that will not be matched in analyzer
   public CaseAnalyzer() : base(Lucene.Net.Util.Version.LUCENE_29, stopWords)
   {      
   }
}

это должно быть зарегистрировано в web.config под

/configuration/sitecore/search/analyzer

пример регистрации анализатора

<caseanalyzer type="EBF.Business.Search.Analyzers.CaseAnalyzer, EBF.Business, Version=1.0.0.0, Culture=neutral"/>

Наконец, вам просто нужно зарегистрировать свой анализатор в конфигурации поиска, например:

<Analyzer ref="search/caseanalyzer" />
...