繁体   English   中英

Solr Lucene-不知道如何为数据建立索引,以便对文档正确打分

[英]Solr Lucene - Not sure how to index data so documents scored properly

这是我的目标。 用户具有技能+熟练程度元组的列表。

我们想根据一些技能/经验标准找到用户:

  • Java,新手
  • PHP,专家

    mysql,高级

高度需要*技能,而其他所有技能都很好的地方。 达到或超过(根据经验)的用户将排名最高。 但是它也应该很好地降级。 如果没有用户同时具有java和php的经验,但是他们具有高度期望的技能之一,那么他们应该排名第一。 仅具有可选技能之一的用户可能会显示在底部。

我的想法是在这样的领域中索引用户的技能:

skill_novice: java
skill_novice: php
skill_advanced: php
skill_expert: php
skill_novice: mysql
skill_advanced: mysql

...这样我至少可以做一个逻辑查询来找到符合高度期望技能的人:

(skill_novice:java AND skill_expert:php)

但这并不能很好地降级(如果找不到匹配项),也找不到可选技能。 也许我可以做这样的事情:

skill_novice:java AND
  (skill_novice:php^0.1 OR skill_advanced:php^0.2 OR skill_expert:php^0.3)

有没有更好的方法可以做到这一点?

我认为您可以在索引时间使用不同的值来增强字段:

  // mysql expert
  Field mysqlf = new Field("skill", "mysql", 
                                    Field.Store.YES, 
                                    Field.Index.ANALYZED); 
  mysqlf.setBoost(10.0F); 
  // mysql begginer
  mysqlf = new Field("skill", "mysql", 
                                    Field.Store.YES, 
                                    Field.Index.ANALYZED); 
  mysqlf.setBoost(1.0F); 

您需要为此启用规范。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM