我们在SOLR中有几个核心设置,并希望搜索这些核心并返回单个结果集.
更多背景:我们有一个SOLR核心,我们索引我们的内部博客引擎.我们还有一个SOLR核心,我们为CMS系统编制索引.我们希望搜索这两个核心,但查看单个结果集.
我知道文档中有相关实体,但我们希望将内核分开,以便于维护和冗余.
我们使用SolrSharp作为搜索SOLR的包装器.任何建议或方向将不胜感激.
只是试图删除所有文件,并做到了这一点:
http://localhost:8983/solr/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E
Run Code Online (Sandbox Code Playgroud)
然后承诺:
http://localhost:8983/solr/update?stream.body=%3Ccommit/%3E
Run Code Online (Sandbox Code Playgroud)
我收到了回复:
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">17</int>
</lst>
</response>
Run Code Online (Sandbox Code Playgroud)
但是当我搜索时,我仍然会得到结果.
我做错了什么?
我的一些同事有一个大型的Java Web应用程序,它使用了一个用Lucene Java构建的搜索系统.我想做的是有一个很好的基于HTTP的API来访问那些现有的搜索索引.我之前使用过Nutch,并且非常喜欢OpenSearch实现如何简单地将结果作为RSS获取.
我已经尝试在solrconfig.xml中设置Solr的dataDir,希望它能很好地获取现有的索引文件,但它似乎只是忽略它们.
我的主要问题是:
Solr可以用来访问其他地方创建的Lucene索引吗?或者可能有更好的解决方案?
好了,我很高兴与Solr的,但我似乎无法弄清楚如何调低日志记录级别,使其实际运行足够快,当我做一个巨大的进口运行.
我甚至不确定它正在使用哪个日志框架(因为,你知道,java.util.logging,log4j和commons-logging 都不够,我们需要将slf4j添加到混合中!)好抱歉,不得不让那个轻微的咆哮.:-)
所以我src/main/resources/log4j.properties
配置了:
log4j.rootLogger=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n
org.apache.solr.core=WARN
org.apache.solr.update.processor=WARN
Run Code Online (Sandbox Code Playgroud)
然后,我已经src/main/resources/logging.properties
配置了以下好的措施:
.level = WARNING
com.gwtstore.level=ALL
com.appgravity.level=ALL
org.apache.solr.core.level=WARNING
org.apache.solr.update.processor.level=WARNING
Run Code Online (Sandbox Code Playgroud)
然而不知何故,我仍然看到以下吨:
INFO: {add=[-7757828706308755634]} 0 0
Feb 21, 2011 6:12:23 PM org.apache.solr.core.SolrCore execute
INFO: [] webapp=null path=/update params={} status=0 QTime=0
Run Code Online (Sandbox Code Playgroud)
这是我的类路径:
src/test/resources
src/test/java
src/main/resources
src/main/java
idea_rt.jar
junit-rt.jar
deploy.jar
dt.jar
javaws.jar
jce.jar
jconsole.jar
management-agent.jar
plugin.jar
sa-jdi.jar
alt-rt.jar
charsets.jar
classes.jar
jsse.jar
ui.jar
apple_provider.jar
dnsns.jar …
Run Code Online (Sandbox Code Playgroud) 我们计划在MongoDB中存储数百万个文档,非常需要全文搜索.我读过Elasticsearch和Solr是全文搜索的最佳解决方案.
弹性搜索是否足够成熟,可用于Mongodb全文搜索?我们也在收集分类.Elasticsearch是否适用于Sharded集合?
使用Elasticsearch或Solr有哪些优缺点?
MongoDB能够进行全文搜索吗?
Solr 4 beta已经发布,GA版本将很快推出.部分文档更新已经存在了一段时间,如下所述:http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/
但是,我还没想出如何用solrj api做到这一点.
有谁知道solrj是否可行?或者solrj是不是没有达到这个功能的速度?
更新:正如我在邮件列表中所描述的那样(请参阅此处的回复),我发现在solrj api中,SolrInputField的值可以是一个映射 - 它不必是一个简单的标量值.如果是地图,solrj会update
在字段的xml元素中添加一个附加属性.例如,这段代码:
SolrInputDocument doc = new SolrInputDocument();
Map<String, String> partialUpdate = new HashMap<String, String>();
partialUpdate.put("set", "foo");
doc.addField("id", "test_123");
doc.addField("description", partialUpdate);
Run Code Online (Sandbox Code Playgroud)
产生这个文件:
<doc boost="1.0">
<field name="id">test_123</field>
<field name="description" update="set">foo</field>
</doc>
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我为这个附加属性使用了"set"这个词,但它不起作用.Solr不像我预期的那样更新字段.根据此链接:http: //solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/ 有效值为"set"和"add".
任何的想法?
我从db表和solr读取数据后编写了一个脚本来更新我的db表.我正在使用asyn.waterfall模块.问题是成功完成所有操作后脚本不会退出.我已经使用了数据库连接池,也认为可能会创建无限期等待的脚本.我想把这个脚本放在crontab中,如果它不能正常退出,它将不必要地创建大量的实例.
如何以不区分大小写的形式创建字符串字段的副本?我想使用典型的"字符串"类型和不区分大小写的类型.类型的定义如下:
<fieldType name="string" class="solr.StrField"
sortMissingLast="true" omitNorms="true" />
<!-- A Case insensitive version of string type -->
<fieldType name="string_ci" class="solr.StrField"
sortMissingLast="true" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
像这样的领域的一个例子:
<field name="destANYStr" type="string" indexed="true" stored="true"
multiValued="true" />
<!-- Case insensitive version -->
<field name="destANYStrCI" type="string_ci" indexed="true" stored="false"
multiValued="true" />
Run Code Online (Sandbox Code Playgroud)
我试过像这样使用CopyField:
<copyField source="destANYStr" dest="destANYStrCI" />
Run Code Online (Sandbox Code Playgroud)
但是,显然在调用任何分析器之前会在源和目标上调用CopyField,所以即使我通过分析器指定了dest不区分大小写,也会保留从源字段复制的值的大小写.
我希望在创建记录时避免从客户端重新传输字段中的值.
我打算在我的电子商务商店中设置过滤系统(优化搜索).你可以在这里看到一个例子:http://www.bettymills.com/shop/product/find/Air+and+HVAC+Filters
PrestaShop,OpenCart和Magento等平台拥有所谓的分层导航.
我的问题是,与使用Solr或Lucene之类的东西进行分面导航相比,Magento或PrestaShop等平台中的分层导航有什么区别.
可以通过php和mysql完成类似的结果吗?
非常感谢详细解释.
我正在使用solr 4.9,不添加任何额外的碎片,只需使用它附带的任何默认值.我创建了一个集合,并尝试使用以下api删除它:
http://<host>/solr/admin/collections?action=DELETE&name=collectionName
Run Code Online (Sandbox Code Playgroud)
但它返回错误:
Solr实例未在SolrCloud模式下运行
我的Solr不是solrCloud,但如何删除我的收藏?