|
http://13shu.iteye.com/blog/754742
2010-09-03 solr 自定义 dismax查询方式
Solr正则表达式算法XMLF#
1、在solrconfig.xml中增加
Xml代码
-
-
-
- imdismax
-
-
- keywords^3 question^2 answer^0.4
-
- keywords^3 question^2 answer^0.4
-
- 2<-1 5<-2 6<90%
-
-
- id,answer,score
-
-
- 100
-
- answer
-
-
- *:*
-
-
- 50
-
-
-
- answer
-
-
- regex
-
- 0.1
-
-
2、创建类IMDisMaxQParserPlugin.java
Java代码
- public class IMDisMaxQParserPlugin extends QParserPlugin
- {
- public static String NAME = "imdismax";
-
- public void init(NamedList args) {
- }
-
- public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
- return new IMDisMaxQParser(qstr, localParams, params, req);
- }
- }
3、创建类IMDisMaxQParser.java 可以在里面增加中文分词
Java代码
- public class IMDisMaxQParser extends DisMaxQParser
- {
- public IMDisMaxQParser(String qstr, SolrParams localParams,
- SolrParams params, SolrQueryRequest req)
- {
- super(qstr, localParams, params, req);
-
- if (null == this.qstr)
- {
- return;
- }
-
- Analyzer analyzer = req.getSchema().getQueryAnalyzer();
-
- if (null == analyzer)
- {
- return;
- }
-
- StringBuilder norm = new StringBuilder();
- try
- {
- //对question分词
- TokenStream tokens = analyzer.reusableTokenStream("question",
- new StringReader(this.qstr));
- tokens.reset();
- Token token = tokens.next();
- while (token != null)
- {
- norm.append(
- new String(token.termBuffer(), 0, token.termLength()))
- .append(" ");
- token = tokens.next();
- }
- }
- catch (Exception ex)
- {
- }
- if (norm.length() > 0)
- this.qstr = norm.toString();
- }
- }
分享到:
solr 数据源导入需要注意的问题 dataimpor ... | solr 查询解析流程
- 17:13
- 评论 / 浏览 (0 / 415)
- 分类:企业架构
- 相关推荐
评论
发表评论
表情图标
字体颜色: 字体大小: 对齐:
提示:选择您需要装饰的文字, 按上列按钮即可添加上相应的标签 您还没有登录,请登录后发表评论(快捷键
|
|
|