我对索引的行为和Solr字段的存储属性有点困惑.
例如,如果我在Schema.xml中有以下内容
<field name="test1" type="text" indexed="false"
stored="false" required="false" />
Run Code Online (Sandbox Code Playgroud)
即使我在其中创建了包含该字段的文档并将值设置为该字段并将文档提交给Solr ,字段test1也不会存储在Solr文档中.因为我有这个stored=false
属性,是否意味着该字段的值在Solr中丢失而不是持久存在?
我有一个使用Sitecore 7.5和Solr 4.7构建的网站.我注意到一个非常奇怪的现象,某些内容项目没有被索引.这是正在发生的事情.
我有一个名为"内容页面"的数据模板.使用此数据模板的大多数内容项目都位于/ sitecore/content/Home/Corporate中.这样的事情:
/sitecore/content/Home/Corporate/About-Us
/sitecore/content/Home/Corporate/Careers
/sitecore/content/Home/Corporate/Terms-Of-Use
Run Code Online (Sandbox Code Playgroud)
我创建的一些测试项目存在于/ sitecore/content中,如下所示:
/sitecore/content/Test-1
/sitecore/content/Test-2
Run Code Online (Sandbox Code Playgroud)
所有这些页面都是使用"内容页面"数据模板构建的.重建索引然后转到Solr UI并执行查询后,我找不到Home节点下面的任何项目.当我查询_templatename:"内容页面"时 - 我只在结果中获得Test-1和Test-2.有谁知道为什么会发生这种情况?这真的很奇怪.我从未见过Solr根本没有索引某些物品的东西.它似乎基于它们在内容树中的位置.
我很困惑和.这是我的理解
autoSoftCommit - 在autoSoftCommit之后,如果SOLR服务器出现故障,autoSoftCommit文件将丢失.
autoCommit - 对磁盘进行硬提交,并确保将所有autoSoftCommit提交写入磁盘并提交任何其他文档.
我的以下配置似乎只与autoSoftCommit一起使用.autoCommit本身似乎没有做任何提交.有什么我想念的吗?
<updateHandler class="solr.DirectUpdateHandler2">
<updateLog>
<str name="dir">${solr.ulog.dir:}</str>
</updateLog>
<autoSoftCommit>
<maxDocs>1000</maxDocs>
<maxTime>1200000</maxTime>
</autoSoftCommit>
<autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>120000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
</updateHandler>
Run Code Online (Sandbox Code Playgroud)
为什么autoCommit会自己动手?
我使用独立的zookeeper设置了SolrCloud复制.但现在我希望对我的Schema.xml进行一些更改并重新加载核心.问题是当我运行单个服务器Solr(没有solrcloud)时,加载了新模式,但我不知道如何在所有复制服务器上重新加载模式.我尝试在其中一个服务器上重新加载架构,没有任何预期的影响.有没有一种方法可以在使用zookeeper的分布式复制设置中在Solr中重新加载我的schema.xml.
我在Ubuntu 12.04下安装Solr 4.3时遇到很大问题.首先我安装了tomcat.我可以通过localhost:8080上的浏览器访问tomcat.进入"Tomcat Web应用程序管理器"我尝试通过2solr.war"文件安装Solr 4.3.该文件已上传部署.但我无法启动它."失败 - 上下文路径/ solr的应用程序无法启动".
日志文件(localhost.log
)看起来像:
07.05.2013 11:05:36 org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: start: Starting web application at '/solr'
07.05.2013 11:05:36 org.apache.catalina.core.StandardContext filterStart
SCHWERWIEGEND: Exception starting filter SolrRequestFilter
org.apache.solr.common.SolrException: Could not find necessary SLF4j logging jars. If using Jetty, the SLF4j logging jars need to go in the jetty lib/ext directory. For other containers, the corresponding directory should be used. For more information, see: http://wiki.apache.org/solr/SolrLogging
at org.apache.solr.servlet.SolrDispatchFilter.<init>(SolrDispatchFilter.java:105)
... 33 more
07.05.2013 11:05:36 org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: …
Run Code Online (Sandbox Code Playgroud) 如何在solr中编写嵌套的schema.xml
schema.xml中的文档说
<!-- points to the root document of a block of nested documents. Required for nested
document support, may be removed otherwise
-->
<field name="_root_" type="string" indexed="true" stored="false"/>
Run Code Online (Sandbox Code Playgroud)
哪个可以使用
https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-BlockJoinQueryParsers
什么是schema.xml用于嵌套以下项目:
我正在研究Solr 4+.
我有几个字段进入我的solr模式,具有不同的solr字段类型.
对文本字段和字符串字段的搜索是否有所不同?
因为我试图搜索字符串字段(这是几个facet字段的复制字段),它不能按预期工作.目标字符串字段被索引并存储.
但是,当我更改文本字段(仅索引)的目标字段时,它工作正常.
你能说出为什么会这样吗?solr中的文本和字符串字段在搜索方面的区别是什么?
在solr中按日期字段提升定义为:
{!boost b=recip(ms(NOW,datefield),3.16e-11,1,1)}
Run Code Online (Sandbox Code Playgroud)
我到处寻找(例如:Solr Dismax Config for Boost Scoring和Solr boost for more multipleued date field,它们都引用了SolrRelevancyFAQ),使用了相同的定义.但我发现这并没有充分提升我的结果.如何让这个日期更强大?
用户正在搜索两个关键字.这两个项目在标题和描述中都包含两个关键字(按相同顺序).两个关键字都没有重复.
并且solr调试输出对我来说太容易让我理解这个问题了.
现在,这不是一个大问题.99%的查询工作正常并产生预期的结果,所以它不像solr根本不起作用,我发现这种情况对我来说非常混乱,不知道如何继续.
我在solr配置中遇到错误.
Caused by: org.apache.solr.common.SolrException: Unable to use updateLog: _version_field must exist in schema, using indexed="true" stored="true" and multiValued="false" (_version_ does not exist)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:806)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:619)
at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:1021)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1051)
... 10 more
Caused by: org.apache.solr.common.SolrException: Unable to use updateLog: _version_field must exist in schema, using indexed="true" stored="true" and multiValued="false" (_version_ does not exist)
at org.apache.solr.update.UpdateLog.init(UpdateLog.java:245)
at org.apache.solr.update.UpdateHandler.initLog(UpdateHandler.java:84)
at org.apache.solr.update.UpdateHandler.<init>(UpdateHandler.java:134)
at org.apache.solr.update.DirectUpdateHandler2.<init>(DirectUpdateHandler2.java:95)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:526)
at org.apache.solr.core.SolrCore.createUpdateHandler(SolrCore.java:597)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:790)
... 13 more …
Run Code Online (Sandbox Code Playgroud) 我有一个客户端程序,它生成1-50百万个Solr文档并将它们添加到Solr.
我正在使用ConcurrentUpdateSolrServer从客户端推送文档,每个请求1000个文档.
文档相对较小(少数小文本字段).
我想提高索引速度.
我试图将"ramBufferSizeMB"增加到1G,将"mergeFactor"增加到25,但没有看到任何变化.
我想知道是否有其他推荐的设置来提高Solr索引速度.
任何相关材料的链接将不胜感激.