Lucene.Net搜索列表

时间:2009-12-16 20:22:18

标签: lucene.net sitecore

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

1 个答案:

答案 0 :(得分:5)

我在搜索中使用了类似的技术来搜索类别层次结构。我使用以下方法来构建查询,将艰苦的工作留给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;
}