Solr基础,在Eclipse中运行Solr

2019-03-27 01:02|来源: 网路


Solr我还是个菜鸟,写这一些文章只是记录一下最近一段时间学习Solr的心得。

Solr是什么?

最近我学Solr的时候,一直看到一句话,Solr 是一个可供企业使用的、基于 Lucene 的开箱即用的搜索服务器。当时想了很久没看懂这句话是什么意思,什么是搜索服务器?当接触的深了才发现,所谓的搜索服务器,就是能够在服务器(Tomcat,Jetty)中运行的搜索程序的一个工程。

Solr能做什么?

了解过Lucene的人都知道,Lucene在做两件事情,索引管理与搜索,Solr同样也不例外,做的也是这两件事情,只不过使之更加简单化。

如果对Lucene还不太了解,推荐看一下觉先的博客:http://www.cnblogs.com/forfuture1978/category/300665.html,这篇博客对于我刚刚接触全文检索的时候帮助很大,另外推荐一本书,英文版Lucene In Action,中文版Lucene实战。

 

下面,切入正题,既然Solr是一个搜索服务器,我们当然需要它能够在我们的Eclipse里进行管理,我就写一下我的一些心得吧。

在Eclipse中运行Solr

1.下载solr完整包,我用的是Solr 3.6.1;

2.在Eclipse中新建一个Dynamic Web project项目,我的命名是solr,大家也可以这样,如果不一样,在你访问的时候注意一下就好了。

3.删除新建项目中的WebContent下的所有内容,将下载的Solr完整包中的dist目录下的apache-solr-3.6.1.war解压,将里面的所有内容复制到WebContent下,复制完成之后会有红叉,别管了,就当没看见。

4.指定solrHome,solrHome是存放solr核心配置文件与索引的地方。

打开WEB-INF/web.xml文件,添加以下节点:

1 <env-entry>
2    <env-entry-name>solr/home</env-entry-name>
3    <env-entry-value>E:/solr</env-entry-value>
4    <env-entry-type>java.lang.String</env-entry-type>
5 </env-entry>

其中env-entry-name必须是solr/home,env-entry-value节点是你要放置solr配置文件的地方。

5.添加solr配置文件。

这里有两种方法,自己建立或者是拷贝下载完整包中的核心配置文件。

第一种方法:拷贝,进入下载包中的example/mutiCore目录下,可以看到有core1,core2,将此文件夹以及下面的solr.xml文件拷贝至solrHome。

第二种方法:(1).新建,进入solrHome,新建solr.xml文件,配置如下:

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <solr persistent="false">
3   <cores adminPath="/admin/cores">
4     <core name="merchant" instanceDir="merchant" />
5   </cores>
6 </solr>

其中adminPath的文件如代码所示,最好不要更改,core中name随意,最好是有一定的实际意义的,instanceDir,这里指定了该core的目录,这里配置了merchant,也就意味着是solrHome下的merchant目录。

在这里解释一下多核心配置,此处示例我只存放了一个core,因为我们的产品只需要对着一个merchant进行全文检索。如果有需要,比如说还需对coupon等文件检索的话,就需要配置多核。example/muticore文件夹下给出了多核的示例,大家可以参考一下。

(2).新建merchant目录(与配置中的instanceDir一致),然后在merchant下新建conf目录,在conf里新建两个xml文件,分别是schema.xml,solrconfig.xml,这两个xml的配置会在下篇博客中详细讲述,如果不知道如何配置,拷贝example/muticore/core1/conf里面的两个文件进来即可。

6.在Eclipse中启动solr。

在servers窗口中new一个server,然后将刚刚新建的项目add进去;

修改端口,双击刚刚新建的服务器,在port里面修改HTTP/1.1的端口为8983,这里可以自定义,最好不要和你的其他项目重复。然后保存;

启动服务器。

7.在浏览器中打开solr管理面板。

打开以下地址,http://localhost:8983/solr/,然后你就可以看到Admin merchant选项了,点击进入,就是刚刚配置的merchant core的管理面板。


转自:http://www.cnblogs.com/wrt2010/archive/2012/11/13/2767556

相关问答

更多
  • /?q=query&fl=field1,field2,field3 /?q=query&fl=field1,field2,field3
  • 在Solr管理页面上单击[INFO] 。 下一个屏幕将有版本。 (对于我来说,Solr管理页面位于:http:// {host-name-or-ip}:{port} / solr / admin,我发现我正在处理一个较旧的版本。 0 Solr实现版本:1.4.0 833479) On the Solr Admin page click on [INFO]. The next screen will have the version. (For me, the Solr admin page is locat ...
  • Metaphone和Wildcards不兼容。 首先,Lucene不会使用通配符,模糊匹配,正则表达式等来分析术语。因此,您尝试针对metaphone代码搜索纯文本。 所以你有了: 在索引:APTL 在查询中:abdul~0.5 我认为这更明显地说明为什么你没有得到任何比赛。 那是levenshtein距离3,这是相当可观的。 将metaphone与通配符混合起来并不是很有意义。 有效的互联网电话匹配应该是完全匹配。 变音符算法将术语缩减为代表前四个声音的代码(稍微简化)。 这是搜索相关宽松结果的两种不同且 ...
  • 两个不同的核心是最简单的处理方式。 没有大问题 Two different cores are deffinitely the easiest way of handling this. No big issues in that
  • 不知道你是如何导入它的:听起来就像你在寻找Source附件 。 如果直接使用Solr源代码可能会更好。 检查版本中包含的README文件,有一个用于初始化eclipse的ant任务: 设置您的ide运行“蚂蚁eclipse”。 然后,所有依赖项都使用ivy加载,您可以从IDE中运行它。 Without knowing how you imported it exactly: sounds like you are looking for Source attachment. It might be bett ...
  • 我想你想刷新索引的原因是因为你想要近实时搜索。 实质上,您希望搜索即时反映添加的文档。 在solr中,通常由softCommits或hardCommit通过openSearcher = true进行控制。 在这里阅读更多 https://lucidworks.com/2013/08/23/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/ 要点是这个 硬承诺是关于耐久性,软承诺是关于可见性 现在,如果我明白你所做的这一切都是为 ...
  • 我想你可以在这里查看 https://lucene.apache.org/solr/5_2_0/solr-core/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.html 但我建议不要使用嵌入式的,请参阅下面的链接 http://wiki.apache.org/solr/EmbeddedSolr I think its possible you can check here https://lucene.apache.org/solr/5_ ...
  • 我们将Solr配置与Eclipse项目中的相应war文件保持在一起。 我将把这个项目称为your project here 。 这样我们就可以将所有东西放在一个地方 战争档案 指数 配置 你需要做的是 1)在eclipse中创建一个空的tomcat服务器 2)将-Dsolr.solr.home=${resource_loc://solr/home}到该tomcat的VM参数 3)将solr war文件作为到该tomcat的server.xml We a ...
  • 您列出的文档参考描述了Solr 4中的原子更新参数,SolrNet目前不支持这些参数 - 有关更多详细信息,请参阅问题199 。 在将此支持添加到SolrNet之前,更新索引中文档的唯一选择是重新发送整个文档(C#中的对象),并适当设置所需的更新/删除的字段。 在内部,Solr将使用更新的字段将文档重新添加到索引中。 此外,在索引中添加/更新文档时,在发出提交之前,对索引的查询将不会显示这些更改。 我建议使用AddParameters的CommitWithin选项来允许Solr在内部处理它,这在SolrWi ...
  • 这似乎是从我的泰国示例中复制而来的,其中已经解释了分析器序列。 该配置用于搜索诸如“sawadika”之类的内容,并获得包含原始单词的实际泰语文本,该原始单词听起来像是(女性发起的)问候语。 你似乎混淆了翻译(谷歌翻译中的泰语到英语)和音译(将泰语映射到发音匹配/关闭拉丁语)。 音译就是这里发生的事情(事实上谷歌也在展示这一点)。 总之,在第一台分析仪之后,您仍然会有音调标记,试图显示泰语所具有的提升/降低/等音调。 第二个分析仪应该删除它们以获得swasdi 。 然后,最终的分析器将进行一些语音扩展以匹配 ...