Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sitecore 8.1 |不搜索自定义Lucene停止词_C#_Search_Lucene.net_Sitecore8_Stop Words - Fatal编程技术网

C# Sitecore 8.1 |不搜索自定义Lucene停止词

C# Sitecore 8.1 |不搜索自定义Lucene停止词,c#,search,lucene.net,sitecore8,stop-words,C#,Search,Lucene.net,Sitecore8,Stop Words,我正在使用Lucene为我的网站实现一个全文搜索解决方案。 目标是在所有sitecore项目的内容中搜索任何已搜索的单词 我可以使用带谓词的搜索来完成此操作: var predicate = PredicateBuilder.True<SearchResultItem>(); var searchTerms = search.Split(' '); predicate = predicate.Or(item => item.Content.Contains(search)).

我正在使用Lucene为我的网站实现一个全文搜索解决方案。 目标是在所有sitecore项目的内容中搜索任何已搜索的单词

我可以使用带谓词的搜索来完成此操作:

var predicate = PredicateBuilder.True<SearchResultItem>();
var searchTerms = search.Split(' ');

predicate = predicate.Or(item => item.Content.Contains(search)).Boost(3);

foreach (var word in searchTerms)
{
 predicate = predicate.Or(item => item.Content.Contains(word)).Boost(1);
}

var allItems = Context.GetQueryable<SearchResultItem>().Where(predicate);
var predicate=PredicateBuilder.True();
var searchTerms=search.Split(“”);
谓词=谓词.Or(item=>item.Content.Contains(search)).Boost(3);
foreach(搜索术语中的var单词)
{
谓词=谓词.Or(item=>item.Content.Contains(word)).Boost(1);
}
var allItems=Context.GetQueryable().Where(谓词);
然而,当我用一些特定的词搜索时,我出现了一个错误“生成的Lucene查询包含太多的子句”

为了解决此错误,我使用这些单词创建了一个stopwords文件stopwords.txt,将其放在[FULL_PATH_To_SITECORE_ROOT_FOLDER]\Data\index\上,并将SITECORE.ContentSearch.Lucene.DefaultIndexConfiguration.config文件更改为:

<param desc="defaultAnalyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider">
  <param desc="defaultAnalyzer" type="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net">
    <param hint="version">Lucene_30</param>
      <param desc="stopWords" type="System.IO.FileInfo, mscorlib">
      <param hint="fileName">[FULL_PATH_TO_SITECORE_ROOT_FOLDER]\Data\indexes\stopwords.txt</param>
      </param>
  </param>
</param>

卢塞诺30
[指向站点核心根文件夹的完整路径]\Data\index\stopwords.txt
我不再出现“生成的Lucene查询包含太多子句”错误,但根据我的理解,当我在stopword.txt文件中设置stopword时,Lucene不应该在项目内容中搜索该单词

这意味着,当我搜索“伦敦假日”时,应返回与“伦敦假日”相同的结果

然而,这并没有发生。 当我搜索“holiday in London”时,返回的结果要多得多,包括的项目中既没有“London”也没有“holiday”这个词,而是存在“in”这个词

有人能帮我弄清楚我是怎么逃走的吗

提前谢谢