[solr] solr 中的indexed 和stored有点不明白
tan8888
2009-12-21
刚学solr。我看有的人这么写indexed = true ,stroed=false,还有人写indexed=false,stored=true,我有点不明白,可以索引,为什么不存储呢?那有一篇文章,有10万字,设置为indexed = true ,stroed=false,那占不占空间啊?
说到底,还是不明白index和store的意思 |
|
luckaway
2009-12-22
索引储存的是分词之后的结果,一项、一项存储的,不是整体存储的!
了解下倒排索引就知道了 |
|
tan8888
2009-12-22
luckaway 写道 索引储存的是分词之后的结果,一项、一项存储的,不是整体存储的!
了解下倒排索引就知道了 你的意思是,indexed是分词之后索引的,而stored=true是整体储存的?那为什么不全部设置为indexed=true呢,这样也可以查询? |
|
imjl
2009-12-22
tan8888 写道 luckaway 写道 索引储存的是分词之后的结果,一项、一项存储的,不是整体存储的!
了解下倒排索引就知道了 你的意思是,indexed是分词之后索引的,而stored=是整体储存的?那为什么不全部设置为indexed=true呢,这样也可以查询? 呵呵,,并不是所有field都需要查询的,有的只是顺带。 你可以这样理解: Indexed=true 就是可以查询 Stored=true 就是内容存储 设置关键是只设置需要查询的Indexed=true,需要和查询结果一起返回的字段内容设置Stored=true,其他就是false,节约索引大小和资源。 |
|
seraphim871211
2009-12-22
都是针对field的:
indexed表示需不需要建立索引,以便之后对这个field进行查询; stored表示需不需要随索引同时存储这个field本身的内容,以便查询时直接从结果中获取该内容,一般大数据(比如文件内容本身)不会和索引一起保存,节省资源,防止索引过大。 索引本身和被索引的内容要分清,不理解的话,倒排索引:http://zh.wikipedia.org/wiki/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95 |
|
tan8888
2009-12-22
谢谢你们回答啊,初学solr,很多不明白。
再问一下: Collection<SolrInputDocument> docs = new HashSet<SolrInputDocument>(); SolrServer server = new CommonsHttpSolrServer("http://localhost:8080/solr/"); for(int i = 0;i<10;i++){ SolrInputDocument input = new SolrInputDocument(); input.addField("id", "3654"); input.addField("name", "xx"); docs.add(input); } server.add(docs); server.commit(); 把这段代码放在main方法,总是执行不成功,总是 Exception in thread "main" org.apache.solr.common.SolrException: /solr/update /solr/update request: http://localhost:8080/solr/update?wt=javabin&version=1 at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:424) at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:243) at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105) at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:49) at com.tan.SolrServerGetter.main(SolrServerGetter.java:38) 为什么呢,那段代码可以在main方法执行吧,不需要部署到tomcat吧,各位有没有写好的简单的solr示例,不是apache上面的,带中文分词的。我一次也没有成功部署过自己的示例,倒是apache上面的示例可以部署成功。 |
|
tan8888
2009-12-22
谢谢你们回答啊,初学solr,很多不明白。
再问一下: Collection<SolrInputDocument> docs = new HashSet<SolrInputDocument>(); SolrServer server = new CommonsHttpSolrServer("http://localhost:8080/solr/"); for(int i = 0;i<10;i++){ SolrInputDocument input = new SolrInputDocument(); input.addField("id", "3654"); input.addField("name", "xx"); docs.add(input); } server.add(docs); server.commit(); 把这段代码放在main方法,总是执行不成功,总是 Exception in thread "main" org.apache.solr.common.SolrException: /solr/update /solr/update request: http://localhost:8080/solr/update?wt=javabin&version=1 at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:424) at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:243) at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105) at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:49) at com.tan.SolrServerGetter.main(SolrServerGetter.java:38) 为什么呢,那段代码可以在main方法执行吧,不需要部署到tomcat吧,各位有没有写好的简单的solr示例,不是apache上面的,带中文分词的。我一次也没有成功部署过自己的示例,倒是apache上面的示例可以部署成功。有的话可以发到我的邮箱347890594@qq.com 谢谢啊 |
|
seraphim871211
2009-12-22
这个。。。你有没看过Solr官网的说明啊,Solr必须部署在Servlet Container中运行。demo中能够运行是内嵌了jetty吧。
还是搞清楚这个是什么东西,为什么要用再来说吧。不回复了,Java程序员太懒了 |
|
tan8888
2009-12-23
引用 这个。。。你有没看过Solr官网的说明啊,Solr必须部署在Servlet Container中运行。demo中能够运行是内嵌了jetty吧。 还是搞清楚这个是什么东西,为什么要用再来说吧。不回复了,Java程序员太懒了 我当然知道solr是要部署在服务器中了,而且我也知道demo是用jetty,你可能没看明白我的问题,这段代码是客户端,只是向服务器发送请求,是不需要部署在服务器,这段代码没有执行成功,不知道哪出现问题,才会有此一问. 可能你们很厉害,我是初学者,相信也有很多刚接触solr的人不太明白一些原理,都是自学,没有人教才会问一些很低级的问题,像你们这样高手能够理解才行。 |
|
imjl
2009-12-23
solr运行有多种方式,,tan8888的是基于solrj的一种,jetty,tomcat是另一种。
至于“可能你们很厉害,我是初学者,相信也有很多刚接触solr的人不太明白一些原理,都是自学,没有人教才会问一些很低级的问题,像你们这样高手能够理解才行。”,,,是一句屁话。solr不是大学学科,国内也没啥相关机构教授,大家都是自学的。没有人有义务教授新手 至于你代码我觉得solr的wiki上面有比较多得信息可以参考,至于部署tomcat或者jetty的支持中文的solr,baidu和google上面很多。 |