Lucene.Net-不同服务器中的奇怪行为

Lucene.Net-不同服务器中的奇怪行为,lucene.net,Lucene.net,我在写一篇搜索我们其中一个网站的文章:(网站a) 这是工作的预期。 因为我们有几个网站,他们使用相同的骨架, 我将搜索上载到另一个站点(站点B) 但搜索停止返回结果。 在对代码进行了一次循环之后,我成功地使其工作如下:(仅显示重写的代码行) 有人知道为什么会这样吗? 我已经检查了Lucenedll版本,两个站点的版本都相同(2.9.2.2) 我在网站上写的代码是错误的吗?站点B代码是否错误? 这完全是我的错吗?生产服务器会影响这样的事情吗?它们在磁盘上没有单独的索引吗?如果它们的索引不同,它们也

我在写一篇搜索我们其中一个网站的文章:(网站a)

这是工作的预期。 因为我们有几个网站,他们使用相同的骨架, 我将搜索上载到另一个站点(站点B) 但搜索停止返回结果。 在对代码进行了一次循环之后,我成功地使其工作如下:(仅显示重写的代码行)

有人知道为什么会这样吗? 我已经检查了Lucenedll版本,两个站点的版本都相同(2.9.2.2)

我在网站上写的代码是错误的吗?站点B代码是否错误?
这完全是我的错吗?生产服务器会影响这样的事情吗?

它们在磁盘上没有单独的索引吗?如果它们的索引不同,它们也会返回不同的结果。我想到的一件事是,如果存在某种区分大小写的问题,因为TermQuery将查找精确匹配,解析器将根据分析器尝试标记/过滤搜索词(可能搜索“true”而不是“true”)。它们确实有单独的索引(完全不同的位置,具有相同的功能)但是,它们的索引方式相同,数据也相同。你可以将其视为我在两个索引中都索引了
BOOK A
,以相同的方式,使用相同的属性,但一个有效,而另一个无效。这两个都是最近重新索引的吗?意思是说,删除了一个文档,然后再次重建它?因为如果你修改了索引过程,但没有对整个过程重新编制索引,但你可能知道。我只是猜测是新代码中的分析器部分使其工作,这就得出了索引文档中的某种差异。你用Luke检查过数据吗?jishi是对的,原因是它不能与原始代码一起工作因为您不使用QueryParser解析“True”,这将使用StandardAnalyzer进行处理,StandardAnalyzer将其转换为“True”(小写)@JfBeaulac-第一个代码应该可以工作,我编写了第二个代码来解决问题…所以你的解释是错误的…我知道standardanalyzer会将其转换为小写…jishi-我已经仔细查看了数据,没有任何差异。Luke没有显示实际的索引项。我建议你实际复制索引f从一个服务器到另一个服务器,看看它的行为是否不同,如果你有这种可能性的话。
    BooleanQuery booleanQuery = new BooleanQuery();

    foreach (var field in fields)
    {
        QueryParser qp = new QueryParser(field, new StandardAnalyzer());
        Query query = qp.Parse(search.ToLower() + "*");
        if (field.Contains("Title")) { query.SetBoost((float)1.8); }
        booleanQuery.Add(query, BooleanClause.Occur.SHOULD);  
    }

    // CODE DIFFERENCE IS HERE
    Query query2 = new TermQuery(new Term("StateProperties.IsActive", "True"));
    booleanQuery.Add(query2, BooleanClause.Occur.MUST);
    // END CODE DIFFERENCE

    Lucene.Net.Search.TopScoreDocCollector collector = Lucene.Net.Search.TopScoreDocCollector.create(21, true);

    searcher.Search(booleanQuery, collector);
    hits = collector.TopDocs().scoreDocs;
QueryParser qp2 = new QueryParser("StateProperties.IsActive", new StandardAnalyzer());
Query query2 = qp2.Parse("True");
booleanQuery.Add(query2, BooleanClause.Occur.MUST);