《Java开发手册》泰山版于4.22正式发布
会当凌绝顶,一览众山小。经过一年的修炼,《Java开发手册》泰山版于4.22正式发布。 为了帮助大家充分理解手册的内容,我们准备了七天学习训练营和丰富的社区周边奖品。 欢迎少侠们来挑战七天打卡,并分享在阅读和学习过程中的收获。
访问链接:http://t.cn/A6wTyHKb 了解详情
在结果中返回函数值
假设你有一个服务,你的用户可以搜索不同的公司,用户输入一个简单的关键字,可以返回匹配关键字的公司,但是有一天,用户要求返回的公司列表中可以显示公司跟用户的距离,这是该怎么做呢?
准备工作
在开始之前,需要先了解字段别名功能,具体可以参看这里
怎么做
1.假设我们在 schema.xml 中定义了如下索引结构:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="name" type="text" indexed="true" stored="true"/> <field name="loc" type="location" indexed="true" stored="true"/> <dynamicField name="*_coordinate" type="double" indexed="true" stored="false" />
2.我们需要定义 location 字段类型,如下所示:
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
3.再假设我们有以下索引数据
<add> <doc> <field name="id">1</field> <field name="name">Company 1</field> <field name="loc">56.4,40.2</field> </doc> <doc> <field name="id">2</field> <field name="name">Company 2</field> <field name="loc">50.1,48.9</field> </doc> <doc> <field name="id">3</field> <field name="name">Company 3</field> <field name="loc">23.18,39.1</field> </doc> </add>
4.现在可以通过以下语句查询到名称中匹配 company 的公司
q=name:company&fl=*
5.假设我们已经获得了客户端位置是 50.0, 28.0,然后我们打算在公司结果列表中显示客户端跟这些公司的距离。这时我们需要将以下参数加载 fl 中:
dist:geodist(loc,50.0,28.0)
这样整个查询看起来像这样:
q=name:company&fl=*,dist:geodist(loc,50.0,28.0)
查询返回的内容如下所示:
<?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">0</int> <lst name="params"> <str name="q">name:company</str> <str name="fl">*,dist:geodist(loc,50.0,28.0)</str> </lst> </lst> <result name="response" numFound="3" start="0"> <doc> <str name="id">1</str> <str name="name">Company 1</str> <str name="loc">56.4,40.2</str> <double name="dist">1077.4200268973314</double> </doc> <doc> <str name="id">2</str> <str name="name">Company 2</str> <str name="loc">50.1,48.9</str> <double name="dist">1487.4260767512278</double> </doc> Chapter 4 153 <doc> <str name="id">3</str> <str name="name">Company 3</str> <str name="loc">23.18,39.1</str> <double name="dist">3134.746384852772</double> </doc> </result> </response>
上面结果中 dist 就是客户要的距离字段。
google 无愧最强的搜索引擎
译书栏目使用的是 WikiWebHelp 这一开源软件,这个软件读取书本数据用的都是ajax方式,当时就担心这种方式会影响搜索引擎抓取,今天测试了一下,在各大搜索引擎中搜索 site:www.solrcn.com/books,结果仅 google 和 soso 能搜索到数据,其中 soso 仅少量数据,google 作为老大果然有老大的范。所以建议开发人员以后使用 google 搜索引擎,至于 google 搜索引擎不稳定的问题,可以使用 ip 方式解决,具体细节可以上 google 搜一下。
solr 4.x 特性:局部更新索引
该功能在 lucene4.x 的更新日志中有提到,最近终于找到了相关的说明,详见更新文档的单个字段。该功能看起来相当不错,假设要索引文章的新闻,新闻有个点击数的字段,需要搜索的结果按点击数排序时,这样 就能把点击数也写进索引库,单点击数变化时,单独更新点击数即可,此前是需要重现更新整个索引的,包括文章内容、标题等。这个说明中只提到了用 curl 方式类更新,理论上在 solrj 中也会有相关的接口。另外从描述中看,它只提到了,不需要送其他字段的值,不知道是否 solr 内部将其他字段读取出来,然后再自行索引进去,如果是这样的,整个性能就不济了,只是方便用户少送几个字段。具体情况需要测试一下或者跟踪一下源码
新栏目上线:译书
好久没有更新了,实在惭愧。下个月要考项目经理,需要大量背书,不知道能不能在背书之余坚持翻译下去。
solr 4 有出来一段时间了,一直没有认真跟进,落后太多了,近期打算开始学习,打算看《Apache Solr 4 Cookbook》开学习 Solr 4 的内容,边看边翻译,翻译内容就写在译书栏目。
译书栏目用的是“Wiki Web Help”这个开源项目,由于不会写 Html、css,所有就只能找现成的。“Wiki Web Help”貌似不支持IE6,IE6的朋友要看的话,要换浏览器。另外它每个页面貌似都是通过 Ajax 去后台取的,预计对搜索引擎很不友好,google 和 百度估计都抓取不到其中的内容,到时得想个办法或找个朋友帮忙弄一下。
不说了,坚持翻译下去。大家有什么问题,建议加群问,群里智慧多,群号详见 关于我
Apache Nutch 1.6 发布
Apache Nutch 1.6 发布,该版本修复了超过 20 个 bug,新功能包括:新的 HostNormalizer,可通过 MIME-type 和 Indexer API 的功能增强来动态设置 fetchInterval ,更新 Tika 到 1.2 版本,更新 Autimaton 到 1.11-8 版本。
Solr In action 试读本
《solr in action》这个可能是第一本关于 Solr 4.0 的书籍,看样子是还没写完,这里有第一章的文件,有兴趣的同学可以点击下载:Solr_meap_ch01
文件大小:1.44M
格式:PDF
页数:26页
solr 4.0 正式发布了
随着 lucene 4.0 的正式发布,10月12日,solr 4.0 也正式发布了,跟之前的预测稍差了一点时间。发行包跟之前的结构基本一致,运行起来后,管理界面有了很大的改进,加入了监控、core 管理等,UI 也相对漂亮了。效果如下所示: