【问题标题】:Sitecore term query for filter data过滤数据的 Sitecore 术语查询
【发布时间】:2014-06-16 09:55:19
【问题描述】:

在 Sitecore lucene 搜索中,我使用“术语查询”来过滤来自 sitecore 的数据。 在这里,我在 Sitecore 中有一个名为“描述”的字段,我想根据术语“Lorem”进行归档。但每次我得到 0 结果。如果我不使用 rterm 查询,我会得到所有结果,这意味着我的索引配置是正确的。请帮忙。

TermQuery bothQuery = new TermQuery (new Term("Description", "Lorem"));
BooleanQuery query = new BooleanQuery();
query.Add(bothQuery, BooleanClause.Occur.MUST);
TopDocs topDocs = sc.Searcher.Search(query, int.MaxValue);
SearchHits searchHits = new SearchHits(topDocs, sc.Searcher.GetIndexReader());
return searchHits.FetchResults(0, int.MaxValue).Select(r => r.GetObject<Item>()).ToList();

【问题讨论】:

  • 描述字段是否被标记?
  • 您需要修改您的索引配置。 Martin 是对的,该字段确实需要标记化才能使您的查询正常工作。还要记住,TermQuery 区分大小写。如果您发布有关如何配置索引的更多信息,我们也许可以为您提供更多答案。
  • 嗨,马克,我正在发布我的配置设置。请让我知道它是正确的

标签: lucene sitecore


【解决方案1】:

我注意到您上面的术语定义有一个包含大写字母的字段名称。您没有指定您正在使用的 Sitecore / Lucene 的版本,但我对 Sitecore 6.x 系列的经验是索引过程在索引时将所有字段名称转换为小写。

因此,您在 Sitecore 中的字段可能称为“描述”,但在 Lucene 的索引中可能称为“描述”。尝试更改您的代码以使用小写的字段名称。

您可以使用Lucene Index Viewer from the Sitecore Marketplace 之类的索引显示工具进行检查。它将向您显示索引中字段的名称,并让您无需重新编译代码即可针对它们测试查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多