Tag: solr

如何使用Solr Provider控制Sitecore ContentSearch中嵌套查询的优先级?

版本详细信息:我正在使用Siter 7.5 build 141003,使用Solr v4.7作为搜索引擎/索引服务器。 我也使用标准的Sitecore Solr提供程序,没有自定义索引器。 目标目标:我使用Sitecore ContentSearch LINQ和PredicateBuilder来编译一些灵活的嵌套查询。 目前,我需要在特定的“根项目”中进行搜索,同时排除名称中带有“文件夹”的模板,也不包括路径中带有“/ testing”的项目。 在某些时候,“根项目”可能不止一个项目,路径也可以包含(目前只是“/ testing”。在这些情况下,想法是使用PredicateBuilder构建一个外部“AND”谓词与内部“或“s”表示多个“根项目”和路径排除项。 问题:目前,我正在处理有关嵌套顺序和这些谓词/条件优先级的问题。 我一直在测试几种方法和组合,但我一直遇到的问题是!TemplateName.Contains和Item [“_ fullpath”]。包含优先于Paths.Contains,最终每次产生0结果。 我正在使用Search.log检查查询输出,我一直在手动测试Solr管理员,对它运行查询以比较结果。 下面,您将找到我尝试使用Sitecore Linq的组合示例,以及它们为Solr生成的查询。 原始代码示例: 使用列表进行根项目的原始测试 // sometimes will be 1, sometimes will be multiple var rootItems = new List { pathID }; // simplified to 1 item for now var query = context.GetQueryable(); var folderFilter = PredicateBuilder.True().And(i […]

Sitecore Solr从索引中删除版本

我正在使用Sitecore 7和Solr Search提供程序。 我目前有网站设置来在发布项目时更新搜索索引。 我注意到,当CMS作者创建项目的不同版本然后将它们提交到索引中时,项目的先前版本不会从索引中删除,因此索引包含同一Sitecore项目的多个版本。 有没有人知道我可以更改的任何设置,以确保在添加新版本之前从索引中删除了以前的版本? 我尝试运行一些代码,如下所示,在发布之前从索引中删除项目,但索引上的Delete方法似乎没有删除任何内容。 var indexableItem = (SitecoreIndexableItem)item; ContentSearchManager.GetIndex(index).Delete(indexableItem.UniqueId 任何帮助非常感谢。

这个solr查询有什么问题

我想找到与solr中的特定文档类似的所有文档。 我已经安装了solr并提出了一些疑问。 我试图提出的查询给出了一个我无法在互联网上制作或研究的错误。 你能告诉我一些吗? 我正在使用solrnet客户端,但如果solrnet不适合这种类型的查询,我很乐意使用纯solr并读取XML。 这是我正在使用的查询: http://192.168.1.10:8080/solr/mlt?q=id:12&mlt.fl=content&mlt.mindf=1&mlt.mintf=1 这是我的架构xml 这是我收到的错误:

cURL用C#调用flag

我想在C#中进行以下curl调用: curl “http://localhost:8983/solr/update/extract?literal.id=doc1&commit=true” -F “myfile=@tutorial.html” 我发现我应该使用WebRequest类,但我仍然不确定如何处理这部分: -F “myfile=@tutorial.html”

Solr:如何搜索多个字段

我正在使用solrnet。 我有一个标题和描述字段。 我需要同时搜索这两个字段。 我该怎么做呢?

如何将Space Solr添加到Solrnet查询

我在使用docker的Windows机器上运行Solr。 我已经下载了Spatial Solr插件 ,我最终设法启动并运行。 我也使用Solrnet从我的asp.net mvc项目查询Solr。 现在,将数据添加到我的索引似乎工作正常,SpatialTierUpdateProcessorFactory也可以正常工作。 问题是: 如何使用Solrnet库将空间查询添加到我的常规查询中。 我尝试使用“ExtraParams”参数添加它,但效果不佳。 以下是我尝试将空间查询与数据范围查询相结合的示例。 日期范围查询工作正常,没有附加空间查询: new SolrQuery(“{!spatial lat=51.5224 long=-2.6257 radius=10000 unit=km calc=arc threadCount=2}”) && new SolrQuery(MyCustomQuery.Query) && new SolrQuery(DateRangeQuery); 这导致对Solr的以下查询: (({!spatial lat=51.5224 long=-2.6257 radius=100 unit=km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:13:37Z TO 2011-05-07T13:13:37Z]) 我得到的错误信息是: 远程服务器返回错误:(400)错误请求。 SEVERE: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.Pars eException: Cannot parse ‘(({!spatial lat=51.5224 lng=-2.6257 radius=10000 unit= km calc=arc […]

SolrNet:尝试添加和提交时SolrConnectionException(400)错误请求

我已经到了SolrNet执行“添加”方法的地步,但当我尝试“提交”时,我收到错误。 以下是我的schema.xml,模型,调用它的代码以及我得到的错误。 甚至更奇怪的是,尽管有错误,我重新启动Tomcat之后模型被添加到我的Solr索引中(因此它仍然添加了我的模型,尽管错误但不是立即): schema.xml(字段和字段): Model(Product.cs)*注意 – PageId使用Solr默认的“id”,它是一个字符串,唯一且必需: public class Product { [SolrUniqueKey(“id”)] public string PageId { get; set; } [SolrField(“part_numbers”)] public ICollection PartNumbers { get; set; } [SolrField(“page_url”)] public string PageUrl { get; set; } [SolrField(“product_name”)] public string Name { get; set; } } 代码初始化,调用Add和Commit *注意 – 这是一个unit testing,所以init只调用一次: Startup.Init(“http://localhost:8080/solr”); Product testProd = new Product() […]

如何在Web API中维护请求的状态或队列

我有情况,我必须在Web API方法中接收请求,排队这些请求,然后将批量发送到数据库(Solr实例)。 我不确定如何维护来自多个来源的一批请求。 现在我将每个请求数据以json格式写入磁盘上的文件,稍后我将有一个Windows服务,浏览文件夹读取所有文件,更新数据库并删除这些文件。 这是我在Web API中所做的 public void Post(LogEntry value) { value.EventID = Guid.NewGuid(); value.ServerTime = DateTime.UtcNow; string json = JsonConvert.SerializeObject(value); using(StreamWriter sw = new StreamWriter(value.EventID.ToString())) { sw.Write(json); } } (这里的EventID是GUID) 这个过程看起来不正确,必须有一种维护请求队列的方法,但我不确定如何在多个请求期间维护队列。 我这样做的原因是,在solr实例中批量插入比通过SolrNet插入单个记录更快。 我希望在Web API上每秒至少获得100个请求。 我想创建一批1000个请求并每10秒更新一次solr实例。 请不要认为我需要代码,只需知道我应采用什么策略来维护请求/状态队列。

如何在Lucene.net中执行语音和近似搜索

当我阅读Lucene.net文档时,我找到的唯一分析器是标准分析器。 我想确保我可以对我的索引进行语音或近似搜索。 我应该在Lucene.net上使用一些额外的库吗?

使用SOLR计算两个ulongs之间的“相似性”/“bitcount”

我们有一个图像数据库,我使用David Oftedal实施的Neal Krawetz博士的方法计算了PHASH。 部分示例代码计算这些长度之间的差异在这里: ulong hash1 = AverageHash(theImage); ulong hash2 = AverageHash(theOtherImage); uint BitCount(ulong theNumber) { uint count = 0; for (; theNumber > 0; theNumber >>= 8) { count += bitCounts[(theNumber & 0xFF)]; } return count; } Console.WriteLine(“Similarity: ” + ((64 – BitCount(hash1 ^ hash2)) * 100.0) / 64.0 + “%”); 挑战是我只知道其中一个哈希,我想查询SOLR以找到相似顺序的其他哈希值。 几点说明: 在这里使用SOLR(只有我有的替代品是HBASE) […]