标签: solr4

使用SolrJ和Solr4进行刻面

我已经浏览了本网站上的相关问题,但没有找到相关的解决方案.

使用表单的HTTP请求查询我的Solr4索引时

&facet=true&facet.field=country
Run Code Online (Sandbox Code Playgroud)

响应包含所有不同国家/地区以及每个国家/地区的计数.

如何使用SolrJ获取此信息?我尝试过以下方法,但它只返回所有国家/地区的总计数,而不是每个国家:

solrQuery.setFacet(true);
solrQuery.addFacetField("country");
Run Code Online (Sandbox Code Playgroud)

以下似乎有效,但我不想事先明确设置所有分组:

solrQuery.addFacetQuery("country:usa");
solrQuery.addFacetQuery("country:canada");
Run Code Online (Sandbox Code Playgroud)

其次,我不确定如何从QueryResponse对象中提取构面数据.

所以有两个问题:

1)使用SolrJ如何在字段上进行分面并返回分组而不明确指定组?

2)使用SolrJ如何从QueryResponse对象中提取构面数据?

谢谢.

更新:

我也尝试过类似谢尔盖的回应(下图).

List<FacetField> ffList = resp.getFacetFields();
log.info("size of ffList:" + ffList.size());
for(FacetField ff : ffList){
    String ffname = ff.getName();
    int ffcount = ff.getValueCount();
    log.info("ffname:" + ffname + "|ffcount:" + ffcount);           
}
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了大小= 1的ffList,循环经历了1次迭代.在输出ffname ="country"中,ffcount是与原始查询匹配的总行数.

这里没有每个国家的细分.

我应该提一下,在同一个solrQuery对象上,我也调用了addField和addFilterQuery.不确定这是否会影响到分面:

solrQuery.addField("user-name");
solrQuery.addField("user-bio");
solrQuery.addField("country");
solrQuery.addFilterQuery("user-bio:" + "(Apple OR Google OR Facebook)");
Run Code Online (Sandbox Code Playgroud)

更新2:

我想我得到了它,再次基于谢尔盖在下面说的话.我使用FacetField.getValues()提取了List对象.

List<FacetField> fflist = resp.getFacetFields();
for(FacetField ff : fflist){
    String ffname = ff.getName();
    int ffcount = ff.getValueCount();
    List<Count> …
Run Code Online (Sandbox Code Playgroud)

java solr faceted-search solrj solr4

5
推荐指数
1
解决办法
9436
查看次数

如何在SOLR中编制.html文件索引

我想要做索引的文件存储在服务器上(我不需要抓取)./ path/to/files /示例HTML文件是

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="product_id" content="11"/>
<meta name="assetid" content="10001"/>
<meta name="title" content="title of the article"/>
<meta name="type" content="0xyzb"/>
<meta name="category" content="article category"/>
<meta name="first" content="details of the article"/>

<h4>title of the article</h4>
<p class="link"><a href="#link">How cite the Article</a></p>
<p class="list">
  <span class="listterm">Length: </span>13 to 15 feet<br>
  <span class="listterm">Height to Top of Head: </span>up to 18 feet<br>
  <span class="listterm">Weight: </span>1,200 to 4,300 pounds<br>
  <span class="listterm">Diet: </span>leaves and branches of trees<br>
  <span class="listterm">Number of Young: </span>1<br>
  <span class="listterm">Home: …
Run Code Online (Sandbox Code Playgroud)

solr data-import full-text-indexing dataimporthandler solr4

5
推荐指数
2
解决办法
9952
查看次数

SOLR 4.2 - solr.LatLonType类型vs solr.SpatialRecursivePrefixTreeFieldType

我目前正在使用SOLR 4.2来索引地理空间数据(纬度和经度数据).我已将我的地理空间字段配置如下.

 <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>   

  <field name="latlong"     type="location"   indexed="true" stored="false" multiValued="true"/>
Run Code Online (Sandbox Code Playgroud)

我只是想确保我使用正确的SOLR类来执行地理空间搜索,因为我不确定未来版本的SOLR将支持哪个2类(LatLonType与SpatialRecursivePrefixTreeFieldType).

我假设SpatialRecursivePrefixTreeFieldType是latlong的升级版本,有人可以确认我是否正确吗?

lucene solr geospatial spatial-index solr4

5
推荐指数
1
解决办法
2934
查看次数

Solr中的多个查询

我的问题是我在Solr中有n个字段(比如大约10个)可搜索,它们都被编入索引并存储.我想首先在我的5000个文档的整个索引上运行一个查询,这个文档将平均达到500个文档.接下来,我想在这500个文档上使用不同的关键字集查询,而不是在整个索引上查询.

因此,我第一次发送查询时会生成一个分数,第二次运行查询时,生成的新分数应该基于上一个查询的500个文档,或者换句话说,Solr应该只考虑这500个文档作为整个指数.

总而言之,5000的索引将被过滤到500然后50(5000> 500> 50).它基本上是过滤但我想在Solr中这样做.

我有合理的基础知识,还在学习.

更新:如果以数学方式表示,它将如下所示:

results1=f(query1)
results2=f(query2, results1)
final_results=f(query3, results2)
Run Code Online (Sandbox Code Playgroud)

我希望使用程序完成此操作,最终用户只能看到50个结果.因此,分面不是一种选择.

lucene search solr solrj solr4

5
推荐指数
2
解决办法
8666
查看次数

rails4 solr sunspot多核,分离索引如何使其工作?

$ rails -v
Rails 4.0.0

$ cat Gemfile.lock | grep solr
      rsolr (~> 1.0.7)
    sunspot_solr (2.0.0)
    rsolr (1.0.9)
      sunspot_solr (>= 1.2)
  sunspot_solr!


$ cat Gemfile.lock | grep sunspot
  remote: https://github.com/sunspot/sunspot.git
    sunspot (2.0.0)
    sunspot_rails (2.0.0)
      sunspot (= 2.0.0)
    sunspot_solr (2.0.0)
    sunspot-rails-tester (1.0.0)
      sunspot_rails (>= 1.2)
      sunspot_solr (>= 1.2)
  sunspot-rails-tester
  sunspot_rails!
  sunspot_solr!
Run Code Online (Sandbox Code Playgroud)

http://localhost:8982/solr/#/
版本
solr-spec
4.2.0.2013.03.06.22.32.13
solr-impl
4.2.0 1453694 - rmuir - 2013-03-06 22:32:13
lucene-spec
4.2.0
lucene-impl
4.2.0 1453694 - rmuir - 2013 -03-06 22:25:29

我要做的是:
运行2个不同的solr实例同时运行.
分离索引和从分离的rails环境(例如生产和开发)中搜索的所有内容.

我面临的问题:
如果我尝试运行2个独立的solrs,它们会运行并启动,但它们不会响应它们.

我告诉他们一个问题,但似乎没有人回答.
https://github.com/sunspot/sunspot/issues/435 …

solr ruby-on-rails sunspot solr4 ruby-on-rails-4

5
推荐指数
0
解决办法
588
查看次数

使用功能查询在Solr中提高分数

我正在研究Solr 4,用于根据存储在Index中的受欢迎程度对我的Solr结果排名进行优化。

现在,当有人进行搜索时,除了相关性等级之外,我还想使用受欢迎度等级来影响相关性等级。最简单的公式可能是:

新的相对排名=得分*人气排名

我一直在http://wiki.apache.org/solr/FunctionQuery#product上查看Solr函数查询,以实现相同的功能,但是我不确定如何使它工作。我不知道如何使用乘积函数获得分数。试图做到这一点,我总是得到错误,因为未定义字段。

现在,我可以使用此处定义的boost 如何在solr中增强字段,但是在要使用Solr提供的功能查询的地方,我还有其他逻辑/要求。

例如,我尝试使用以下似乎有效的简单查询

http://solr:8983/solr/select?q=hp%20laptop&defType=edismax&fl=Id,Name,score&bf=product%28$v1,$v2%29&v1=Id&v2=2
Run Code Online (Sandbox Code Playgroud)

现在,对于我的实际需求,我想将分数设为$ v2,但是我找不到如何做到这一点。

非常感谢您的帮助。

lucene solr full-text-search solrnet solr4

5
推荐指数
1
解决办法
7363
查看次数

跨多个Solr 4.6内核的共享架构和配置

我有很多站点,我使用Solr 4.6.0索引,我希望为每个站点维护单独的核心.每个核心将共享相同的schema.xml和相同的solrconfig.xml.理想情况下,我可以通过管理控制台创建新内核,Solr会选择我的默认核心配置.

目前,当我创建一个新的核心时,我正在文件系统中创建一个名为"我希望核心"的新目录.我然后补充说:

  1. core.properties文件(只包含一个名称= myycorename属性.
  2. 包含通用schema.xml和solrconfig.xml文件副本的conf文件夹

我已经尝试将以下内容放在core.properties文件中并提升级别并相对引用:

schema=../configs/template/schema.xml
config=../configs/solrconfig.xml
Run Code Online (Sandbox Code Playgroud)

我也尝试过symlinking(不太理想,因为我想在windows/osx/linux上运行).

但Solr似乎不喜欢目录之外的相对引用.Core Discovery 4.4和Beyond中提到的configName属性

Solr中是否可以使用这种默认配置?

configuration solr configuration-files solr4

5
推荐指数
1
解决办法
1921
查看次数

数十亿文档导致Solr云性能下降

我正在尝试使用SolrCloud索引大量简单文档,并且遇到了一些性能和可伸缩性限制,并且想知道可以做些什么.

硬件方面,我有一个32节点的Hadoop集群,我用它来运行所有的Solr分片,每个节点有128GB的内存.当前的SolrCloud设置被分成4个单独的32个分片的单独云,从而每个云提供4个运行分片或每8个节点分配一个云.每个分片当前分配了6GB的堆大小.我宁愿避免增加Solr分片的堆内存,以便在集群上运行其他MapReduce作业.

我目前每天在这些云中插入的文件率在两个云中为50亿,第三个为30亿,第四个为20亿; 但是,考虑到容量,目标是扩展解决方案以支持双倍数量的文档.要为这些文档编制索引,可以运行生成Solr XML文档的MapReduce作业,然后通过SolrJ的CloudSolrServer接口提交这些文档.在测试中,我发现将每个云的活动并行插入数量限制为80可以获得最佳性能,因为任何更高的性能都会导致收益递减,这很可能是由于文档在内部不断改组为SolrCloud.从索引的角度来看,正在创建过时的集合来保存一整天的文档,并且通常插入主要发生在当天(前几天只允许搜索),并且计划最多可以保留60天(或者每个云中的集合).最繁忙的云中一个集合中的单个分片索引当前占用整个集合的30G磁盘空间或960G.文档正在自动提交,提交时间为4分钟(opensearcher = false),软提交时间为8分钟.

从搜索角度来看,用例是相当通用且简单的类型搜索:,因此无需调整系统以使用任何更高级的查询功能.因此,对我来说最重要的是使索引性能能够跟上输入的速度.

在初始负载测试中,我能够实现每天每天云计算100亿个文档的预计索引率,总计每天400亿.但是,初始负载测试是在相当空的云上完成的,只有几个小集合.现在已经有几天的文档被编入索引,一旦云在两个最大的云中达到大约15个完整集合(或每个云大约80-100亿个文档),我开始看到索引性能下降相当急剧下降.根据当前的应用程序日志记录,我发现索引性能下降了40%.因此,我担心随着更多集合的添加,性能将如何保持.

我向社区提出的问题是,是否有其他人有过以这种规模使用Solr的经验(数千亿),并且如果有人观察到索引性能随着收集数量的增加而下降.我的理解是每个集合都是一个单独的索引,因此插入率应保持不变.除此之外,还可以在SolrCloud配置中进行哪些其他调整或更改以提高索引性能的速度?我是否对Solr能够处理的事情施加了严格的限制?

lucene solr solrj solrcloud solr4

5
推荐指数
0
解决办法
1504
查看次数

Liferay 6.2-ce-ga2 clustering issue

Liferay 6.2-ce-ga2

I'm trying to cluster two nodes, I'm using tomcat liferay bundle for both the nodes.

I used the following blog post as a reference and many others https://dev.liferay.com/discover/portal/-/knowledge_base/6-1/liferay-clustering

Both the nodes starts up as expected but they are not in sync. I dont have any errors on my console. I used the direct URL to login to a particular node and say, added an organization or published a web content article, which is not getting reflected when i …

solr ehcache liferay liferay-6 solr4

5
推荐指数
1
解决办法
1008
查看次数

是什么决定InstanceDir是完整路径还是相对路径?

使用Solr 4.x中,HTTP://本地主机:8983/solr的/管理/芯返回加载的芯的XML描述,其表示的文件路径位置instanceDir.

...
<lst name="collection1">
 <str name="name">collection1</str>
 <bool name="isDefaultCore">true</bool>
 <str name="instanceDir">C:\solr\solr-4.10.1\example\solr\collection1\</str>
...
Run Code Online (Sandbox Code Playgroud)

在我的Windows 7 PC上,这是一个完整路径,但其他人已将此报告为相对路径.哪些因素可以将此值表示为相对路径,是否有办法强制将其显示为完整路径?

solr solr4

5
推荐指数
1
解决办法
283
查看次数