Lucene.Net 搜索列表

标签 lucene.net sitecore

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

最佳答案

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

关于Lucene.Net 搜索列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917405/

相关文章:

html - 如何在 sitecore 中存储菜单字体图标

lucene - 在 Lucene 索引中添加文档时如何获取 DocId?

asp.net - Sitecore 针对外部成员数据库对用户进行身份验证

Sitecore 9 联合身份验证与 IdentityServer3,无限循环

sitecore - 以编程方式在媒体库下创建图像

c# - 如何获取渲染用户控制路径,即使用渲染 ID 的 Ascx 文件

.net - 在 TokenStream Lucene.Net 中获取 TermAttribute

Lucene.Net 赋予一个字段比另一个字段更大的权重

lucene - .NET 站点上的 Solr

asp.net-mvc - 无法使用 Lucene.Net 和 Azure 应用服务访问 Azure 存储