Java Lucene评分和排序
我希望使用Lucene(4.10)能够匹配和排序数据库中的所有记录。我已经为包含我想匹配的许多不同项目的数据的记录编制了索引 数据示例如下所示Java Lucene评分和排序,java,lucene,Java,Lucene,我希望使用Lucene(4.10)能够匹配和排序数据库中的所有记录。我已经为包含我想匹配的许多不同项目的数据的记录编制了索引 数据示例如下所示 age: 35 fav_colour: red fav_car_manufacturer: bmw 我想返回从最接近的匹配降序排列的所有文档,我可以根据分数进行降序 我目前这样做是为了构建一个查询 MatchAllDocsQuery allDocsClause = new MatchAllDocsQuery(); TermQuery ageTerm
age: 35
fav_colour: red
fav_car_manufacturer: bmw
我想返回从最接近的匹配降序排列的所有文档,我可以根据分数进行降序
我目前这样做是为了构建一个查询
MatchAllDocsQuery allDocsClause = new MatchAllDocsQuery();
TermQuery ageTerm = new TermQuery(new Term("age", "35"));
TermQuery colorTerm = new TermQuery(new Term("fav_color", "red"));
TermQuery carTerm = new TermQuery(new Term("fav_car_manufacturer", "bmw"));
BooleanQuery query = new BooleanQuery();
query.add(allDocsClause, BooleanClause.Occur.MUST);
query.add(ageTerm, BooleanClause.Occur.SHOULD);
query.add(colorTerm, BooleanClause.Occur.SHOULD);
query.add(carTerm, BooleanClause.Occur.SHOULD);
这将返回一组带分数的文档,这很好,但我怀疑这是否正常工作
我的问题是
- 这对匹配来说是完全没有意义的吗?在这方面,我的意思是,我可以理解过滤或精确匹配会很好地工作,但Lucene如何确定80,红色,福特与35,蓝色,雷克萨斯之间的相关性
- 50岁是否比30岁或34岁更接近35岁(在本例中)
- 是否可以提升固定数据集(即颜色)的属性值-例如,在查询中,使用boost+10搜索我最喜爱的颜色=红色,然后使用boost+5搜索第二喜爱的颜色,等等