【问题标题】:Lucene.Net Search ListLucene.Net 搜索列表
【发布时间】:2009-12-16 20:22:18
【问题描述】:

我正在使用 Sitecore,并且有一个多列表字段,我想使用 Lucene 进行搜索。我遇到的问题是该字段是一个以管道分隔的实际值列表,并且该列表中的项目数量可能介于 0 和无限(理论上讲,实际上可能只有一千或两种可能性)之间。我无法成功使用通配符查询,而且我无法想象如何将此字段拆分为多个字段,因为列表中的项目数量未知。

【问题讨论】:

  • 能否提供问题的样本?您是否有一个可以多个(许多)值的字段,还是比这更复杂?
  • 当然,例如,我尝试搜索的字段包含以下值:{303FF303-E8A7-456B-8861-4D7B9CE92D88}|{F88DF50F-928B-41AC-9280-3964AEFA530E}|{

标签: lucene.net sitecore


【解决方案1】:

我在搜索中使用了类似的技术在类别层次结构中进行搜索。我使用以下方法来构建查询,将繁重的工作留给 QueryParser 类。我通常将此查询添加到 BooleanQuery。

QueryParser 通常做得很好,我经常用它来构建我的大部分 Lucene 查询 - 在很多时候构建特定查询时,它似乎比我做得更好!!

您可以做的另一件事是使用 QueryParser 构建它,然后设置断点并查看查询是如何创建的,然后使用特定查询类型更新您的代码。

private Query GetQuery(Sitecore.Data.ID id)
{
    string categoryId = id.Guid.ToString(); //turn ID to string
    StandardAnalyzer analyzer = new StandardAnalyzer(); //use standard analyzer
    QueryParser parser = new QueryParser("categories", analyzer); //search inside category field
    Query query = parser.Parse(categoryId); //get the query
    return query;
}

【讨论】:

  • 我尝试了您对我的所有字段使用 QueryParser 的方法,但是当我尝试使用此查询将两个通配符查询添加到我的布尔查询时,查询结果非常慢。 QueryParser 是否总是比手写查询慢?
猜你喜欢
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
相关资源
最近更新 更多