solr模糊查询
来源:互联网 发布:淘宝 app 版本 编辑:程序博客网 时间:2024/06/05 21:51
关于spring datasolr的模糊查询fuzzy,貌似他是按近义词进行查询,比如:
输入:人民,可以查询出:人们
输入:中共——》中国好声音
输入:中人——》中国好声音,中华人民共和国
(下面是引用别人的blog:)
在SOLR应用中,需要支持对指定关键词部分匹配的应用场景
如何实现SOLR的模糊检索(半匹配)?
何谓模糊检索(半匹配):
这种方式是生产环境下经常要使用到的检索方式,通过对命中请求关键词分词后的一个或多个词元的进行检索方式叫做半匹配或模糊匹配,(注意:这里要与SOLR检索运算符“~” 检索方式区分开)。
如用户输入关键词:战争人,但是索引库里收录只有“战争之人”,这时如果输入:
name:战争人,想要在索引库里匹配到“战争之人”是不可行的,SOLR定会返回空结果集。
一般正常的做法是
输入:name:战争 OR name:人
这就是SOLR告诉我们的解决办法。
看到这里,大家可能就郁闷了,SOLR怎么可能不支持半匹配?用DISMAX啊~~~ ,我也是抱着一线希望查遍了官方WIKI和中英文网站及论坛,也使用了DISMAX的ps(PhraseSlop)参数,但都没有效果。
实在没办法,就索性啃起了SOLR的源代码,结果发现默认检索没有使用SCHEMA配置文件中用到的分词解析器!!
最终确定一个方案通过对解析PARSER的改造实现SOLR对中文QUERY自动分词的支持。
下面就是SOLR v1.4核心源码的简单表示:
//包名:类名:类下面的方法()下一行触发代码所在行号
core:SolrCore:execute() 1303
handler:RequestHandlerBase:handleRequest()
handler:SearchHandler:handleRequestBody()
component:QueryComponent:prepare()
search:QParser:getQuery() 129
search:LuceneQParserPlugin:parse()
component:QueryComponent:prepare()
handler:SearchHandler:handleRequestBody()
component:QueryComponent :process()
handler:SearchHandler:handleRequestBody()
handler:RequestHandlerBase:handleRequest()
core:SolrCore:execute() 1317
servlet:SolrDispatchFilter:doFilter()246
servlet:SolrDispatchFilter:writeResponse()
- solr模糊查询
- solr之~模糊查询
- solr模糊查询
- solr模糊查询
- Solr之精确、匹配、排序、模糊查询-yellowcong
- solr查询
- Solr查询
- 模糊查询
- 模糊查询
- 模糊查询
- 模糊查询
- 模糊查询
- 模糊查询
- 模糊查询
- 模糊查询
- 模糊查询
- 模糊查询
- 模糊查询
- (素材源码)猫猫学IOS(二十)UI之UIPickerView_点菜系统
- Gradle version 1.10 is required. Current version is 2.2.1 :此类问题的一次性解决方案(已验证)
- 组合数学
- 解决Perhaps you are running on a JRE rather than a JDK?问题
- Android网络编程(二)ConnectivityManager和NetworkInfo详解
- solr模糊查询
- ubuntu环境下安装MyEclipse 10.6
- dyld: Library not loaded: @rpath/libswiftCore.dylib
- NSString / NSData / char* 类型之间的转换
- 01_spark1.3_RDD的开发
- Android音频实时传输与播放(二):服务端
- caffe源码解析 — net.cpp
- Spring中配置Quartz的misfireInstruction
- SolrCloud中一台server宕机情况下,依然能够正常查询