lucene 检索做到输入一个 “甲” 将甲相关的都检索出来 并且如果 有 “甲" 这个字段 那他排到最前

我的索引有三个字段

Doc1---
名称:甲苯
别名:无水甲苯;甲基苯
编号:534-07-6

Doc2---
名称:甲苯-2,4-二异氰酸酯
别名:2,4-TDI;2,4-二异氰酸甲苯酯;甲苯-2,4-二异氰酸酯;甲苯基-2,4-二异氰酸酯;2,4-二异氰

  酸酯甲苯;甲苯 2,4-二异氰酸酯 

编号:584-84-9

就比如这两个字段,我搜“甲苯” 条件是这三个字段都检索,那么lucene 的排序是按照检索得分来排,那么Doc2得分最多因为出现 ‘甲苯’ 最多所以排在最前,但关键词是甲苯 ,客户希望找的就是甲苯 Doc1 问题就是如何让最相似的排在最前。

大话西游666
浏览 507回答 3
3回答

一只甜甜圈

我用solr。1,可以给不同域设置不同的域激励因子,从而降低因为次要域出现过多关键字过分影响结果。2,可以通过(关键字出现次数/该域包含单词数)来提高doc1的排序。 具体操作你再查查。

白衣染霜花

生成索引时加上: document.setBoost(100); //自定义评分,如100查询时使用: org.apache.lucene.search.function.FieldScoreQuery;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java