solr 失误的空格 空格是or还是and
来源:互联网 发布:js在数组的末尾加上空 编辑:程序博客网 时间:2024/05/17 21:52
嗯,今天fix了一个困扰我很久的bug,发现真的是被一个“bug”级别的bug困扰好久,甚至还堂而皇之地动用各种方法去修正dixmax查询方式,去修正英文的检索,其实一个小小的back slash就将哥弄头疼了!!
错误描述:
张博用dismax方式查“复旦大学 枫林 图书馆”时,出现的第一条纪录是南京的“敬文图书馆”,让人大跌眼镜。类似的问题有“南京市 玄武湖”等查询。
于此同时,在英文的查询中,united credit union查询也出现错误。原本在english对应的词中添加了下面的filterfactory但是shingle不起作用
于是当时傻傻地把每个英文单词之间的空格都替换为“-”,其实不然,只需要将空格“ ”替换为“\ ”,即将空格转义即可。
而对于前面涉及到的中文的分词结果,空格的作用是将一个query按照空格分成不同的模块然后对每个模块进行对应的分词。如果有空格,对于“复旦大学 枫林 图书馆”:
+((DisjunctionMaxQuery(((var_poi_chinese:复 var_poi_chinese:旦 var_poi_chinese:大 var_poi_chinese:学 var_poi_chinese:复旦 var_poi_chinese:旦大 var_poi_chinese:大学 var_poi_chinese:复旦大 var_poi_chinese:旦大学) | (var_address_chinese:复 var_address_chinese:旦 var_address_chinese:大 var_address_chinese:学 var_address_chinese:复旦 var_address_chinese:旦大 var_address_chinese:大学 var_address_chinese:复旦大 var_address_chinese:旦大学))) DisjunctionMaxQuery(((var_poi_chinese:枫 var_poi_chinese:林 var_poi_chinese:枫林) | (var_address_chinese:枫 var_address_chinese:林 var_address_chinese:枫林))) DisjunctionMaxQuery(((var_poi_chinese:图 var_poi_chinese:书 var_poi_chinese:馆 var_poi_chinese:图书 var_poi_chinese:书馆 var_poi_chinese:图书馆 var_poi_chinese:library) | (var_address_chinese:图 var_address_chinese:书 var_address_chinese:馆 var_address_chinese:图书 var_address_chinese:书馆 var_address_chinese:图书馆 var_address_chinese:library))))~3) ()
而如果将空格替换为or,parsedquery效果为:
+(DisjunctionMaxQuery(((text:复 text:旦 text:大 text:学 text:复旦 text:旦大 text:大学 text:复旦大 text:旦大学) | (var_poi_chinese:复 var_poi_chinese:旦 var_poi_chinese:大 var_poi_chinese:学 var_poi_chinese:复旦 var_poi_chinese:旦大 var_poi_chinese:大学 var_poi_chinese:复旦大 var_poi_chinese:旦大学) | (var_poi_alias:复 var_poi_alias:旦 var_poi_alias:大 var_poi_alias:学 var_poi_alias:复旦 var_poi_alias:旦大 var_poi_alias:大学 var_poi_alias:复旦大 var_poi_alias:旦大学) | (var_address_chinese:复 var_address_chinese:旦 var_address_chinese:大 var_address_chinese:学 var_address_chinese:复旦 var_address_chinese:旦大 var_address_chinese:大学 var_address_chinese:复旦大 var_address_chinese:旦大学))) DisjunctionMaxQuery(((text:枫 text:林 text:枫林) | (var_poi_chinese:枫 var_poi_chinese:林 var_poi_chinese:枫林) | (var_poi_alias:枫 var_poi_alias:林 var_poi_alias:枫林) | (var_address_chinese:枫 var_address_chinese:林 var_address_chinese:枫林))) DisjunctionMaxQuery(((text:图 text:书 text:馆 text:图书 text:书馆 text:图书馆 text:library) | (var_poi_chinese:图 var_poi_chinese:书 var_poi_chinese:馆 var_poi_chinese:图书 var_poi_chinese:书馆 var_poi_chinese:图书馆 var_poi_chinese:library) | (var_poi_alias:图 var_poi_alias:书 var_poi_alias:馆 var_poi_alias:图书 var_poi_alias:书馆 var_poi_alias:图书馆 var_poi_alias:library) | (var_address_chinese:图 var_address_chinese:书 var_address_chinese:馆 var_address_chinese:图书 var_address_chinese:书馆 var_address_chinese:图书馆 var_address_chinese:library))))
如果将空格转义,则得到的parse结果为:
+DisjunctionMaxQuery(((text:复 text:旦 text:大 text:学 text: text:枫 text:林 text: text:图 text:书 text:馆 text:复旦 text:旦大 text:大学 text:学 text: 枫 text:枫林 text:林 text: 图 text:图书 text:书馆 text:复旦大 text:旦大学 text:大学 text:学 枫 text: 枫林 text:枫林 text:林 图 text: 图书 text:图书馆 text:library) | (var_poi_chinese:复 var_poi_chinese:旦 var_poi_chinese:大 var_poi_chinese:学 var_poi_chinese: var_poi_chinese:枫 var_poi_chinese:林 var_poi_chinese: var_poi_chinese:图 var_poi_chinese:书 var_poi_chinese:馆 var_poi_chinese:复旦 var_poi_chinese:旦大 var_poi_chinese:大学 var_poi_chinese:学 var_poi_chinese: 枫 var_poi_chinese:枫林 var_poi_chinese:林 var_poi_chinese: 图 var_poi_chinese:图书 var_poi_chinese:书馆 var_poi_chinese:复旦大 var_poi_chinese:旦大学 var_poi_chinese:大学 var_poi_chinese:学 枫 var_poi_chinese: 枫林 var_poi_chinese:枫林 var_poi_chinese:林 图 var_poi_chinese: 图书 var_poi_chinese:图书馆 var_poi_chinese:library) | (var_address_chinese:复 var_address_chinese:旦 var_address_chinese:大 var_address_chinese:学 var_address_chinese: var_address_chinese:枫 var_address_chinese:林 var_address_chinese: var_address_chinese:图 var_address_chinese:书 var_address_chinese:馆 var_address_chinese:复旦 var_address_chinese:旦大 var_address_chinese:大学 var_address_chinese:学 var_address_chinese: 枫 var_address_chinese:枫林 var_address_chinese:林 var_address_chinese: 图 var_address_chinese:图书 var_address_chinese:书馆 var_address_chinese:复旦大 var_address_chinese:旦大学 var_address_chinese:大学 var_address_chinese:学 枫 var_address_chinese: 枫林 var_address_chinese:枫林 var_address_chinese:林 图 var_address_chinese: 图书 var_address_chinese:图书馆 var_address_chinese:library)))
得到期望的parse结果。
- solr 失误的空格 空格是or还是and
- 空格的url encode到底是+还是 ?
- 【学习笔记】判断输入的一个字符 是字母 还是数字 或者是空格
- java中char类型的默认值是 '\u0000' 吗?是空字符还是空格?
- 易语言获取的网页result中回车还是空格或者是tab
- trim()清不了的空格有可能是 ASCII 160 空格
- 空格还是Tab
- 选择空格还是Tab
- C#中字符 '\0' 是a还是空格?
- 空格
- 空格
- 空格
- 空格
- 空格
- 空格
- 空格
- 全角空格的Unicode码是12288
- js验证文本框输入的是空格
- Codeforces 396C On Changing Tree(树状数组)
- 贪吃蛇ai
- ELF格式文件符号表全解析及readelf命令使用方法
- NSLog的格式
- HTTP协议-教程(二)
- solr 失误的空格 空格是or还是and
- Visual Studio 2010 集成环境下配置OpenGL环境
- 2SAT+uva1146
- APP红海中怎么样找到出路
- PCA降维算法总结以及matlab实现PCA(个人的一点理解)
- Struts2学习笔记--简单的数据校验
- Practical Common Lisp学习笔记(三)常用函数宏备忘
- 如何恢复已删除的 Linux下的 普通文件如何恢复已删除的 Linux下的 普通文件
- 为何要用二进制文件读写