![](/img/trans.png)
[英]How to store tree data in a Lucene/Solr/Elasticsearch index or a NoSQL db?
[英]Solr Lucene - Not sure how to index data so documents scored properly
这是我的目标。 用户具有技能+熟练程度元组的列表。
我们想根据一些技能/经验标准找到用户:
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.