六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 57|回复: 0

小试 solr 的 spellcheck

[复制链接]

升级  58%

37

主题

37

主题

37

主题

秀才

Rank: 2

积分
137
 楼主| 发表于 2013-2-7 15:15:53 | 显示全部楼层 |阅读模式
<div class="postentry">http://blog.chenlb.com/topics/450.html
 
<span style="font-size: small;">spellcheck 可以实现输入“错误”提示,如:输入“周杰仑”搜索时,提示:您是不是要找“周杰伦”。
 
Lucene 有这样的功能。用 n-gram 方法和 Levenshtein distance (编辑距离,算相似度)算法实现。
 
原理大概:用正确的词条,以 n-gram 方法去折分,并建立索引(官方叫:dictionary index),在查询时,去查dictionary index,可以返回正确词条,于是这些词条就是“提示”。
 
solr 1.2 也有此功能。solr 1.3 用组件的方式实现此功能。我现用 solr 1.3 来试下。默认有spellcheck组件了(使已经配置好),这次我用文件源的方式,在solr.home/conf/spellings.txt文件后加:周杰伦。注意一行一个词。
http://localhost:8080/solr/spellCheckCompRH?q=*:*&spellcheck.q=%E5%91%A8%E6%9D%B0%E4%BB%91&spellcheck=true&spellcheck.dictionary=file&spellcheck.build=true
打开上面的连接后,返回的内容,可以下面看到,如下类似的内容:
<div class="dp-highlighter">

  • <lst name="spellcheck">  
  •  <lst name="suggestions">  
  •   <lst name="周杰仑">  
  •     <int name="numFound">1</int>  
  •     <int name="startOffset">0</int>  
  •     <int name="endOffset">3</int>  
  •     <arr name="suggestion">  
  •      <str>周杰伦</str>  
  •     </arr>  
  •   </lst>  
  •  </lst>  
  • </lst>  
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表