如何在 sitecore 6.5 中添加标准分析器以便不忽略停用词

how to Add the standard Analyzer in sitecore 6.5 so that stop word is not ignored

我在搜索时使用以下代码搜索 1.example 的所有关键字:伦敦 2.example : 伦敦桥

但是当我通过

搜索时

示例 3:在伦敦桥

它没有 return 任何结果。而且我的分数也没有排序。在这里我只在标题中搜索并尝试按分数排序(从最高到最低)

以下是我的代码,仅在标题中进行搜索并尝试按分数排序(从最高到最低)

public SearchResultCollection Search(string searchString, string ProgramCampusStage, out  Hits hitScores)
    {
         var searchIndex=Sitecore.Search.SearchManager.GetIndex(SearchIndexName);
        using (IndexSearchContext context = searchIndex.CreateSearchContext())
        {

          // get the search term
           string searchterm = searchString.ToLower().Trim();


        PhraseQuery completeQuery = new PhraseQuery();
        completeQuery.SetSlop(4);

        foreach (var s in searchterm.Split(' '))
        {
            completeQuery.Add(new Term("title", s));
        }


        hitScores = context.Searcher.Search(completeQuery, new Sort(new SortField[1] { SortField.FIELD_SCORE }));
        SearchHits hits = new SearchHits(hitScores);
        var results = hits.FetchResults(0, Int32.MaxValue);

           foreach (var result in results)
            {
                try
                {
                    Item item = result.GetObject<Item>();
                    bool isAuthorized = UserUtility.IsUserAuthorized(item, ProgramCampusStage);
                    if (isAuthorized)
                    {
                        if (item != null)
                        {
                            string categoryName = GetCategoryName(item);

                            if (item.Language.Name != Context.Language.Name || categoryName == string.Empty)
                            {
                                continue;
                            }

                            results.AddResultToCategory(result, categoryName);
                        }
                        else
                        {
                            results.AddResultToCategory(result, OtherCategory);
                        }
                    }
                }
                catch
                {
                    continue;
                }
            }
            return _searchResults = results;
        }
    }
}

与其将停用词作为术语添加到索引中(这可能会让您头疼,例如 'too many clauses' 异常),不如在构建查询时尝试过滤掉停用词:

foreach (var s in searchterm.Split(' '))
{
  if (!Lucene.Net.Analysis.Standard.StandardAnalyzer.STOP_WORDS_SET.Contains(s))
  {
     completeQuery.Add(new Term("title", s));
  }
}