1
virushuo 2012-07-03 01:23:56 +08:00
用booleanquery 你可以把多个条件组合起来,多少个fields都可以。
|
2
kafka0102 2012-07-03 01:42:49 +08:00
这个和IKQueryParser的多field没关系的,它的多field之间是或关系的。问题出在单field上,ik对分词之间使用的And关系。对于分词使用and关系通常是ok,如果直接的or关系会查到很多不相关的,并且因为计算score的偏差使得结果很烂。不过,实际使用来说,可以对query解析结果做些判断,比如如果都是英文字符,使用phrase关系构造,中文类使用And关系,如果返回结果过少,可以再来一次or关系查询。但就你的情况来说,可以再额外构造一个字段包装那几个字段的内容(相当于solr中的copyfield)。
|
3
wangxiaolongbob OP @kafka0102 哈哈,谢谢你啊。我找到了改进问题的2个突破口,这样应该能达到我的目的了。你说“这个和IKQueryParser的多field没关系的,它的多field之间是或关系的。问题出在单field上,ik对分词之间使用的And关系。”我觉得是对的,我觉得这里根本就不适合用多Field查询。接下来要优化的事情:增加一个复制字段(把那3项内容合并起来,到时候就查询这个字段就好了),但是这个字段应该是自动产生的,不应该是管理源维护。另外根据你中间部分所说的还可以尝试优化一下。
|