[英]Solr / Lucene: scoring individual tag
我正在设计一个Lucene搜索索引,其中包括每个文档的排名标签。
例:
Document 1
tag: java , rank 1.2
tag: learning, rank 2.1
tag: bugs, rank 1.2
tag: architecture: rank 0.3
标签来自自动分类算法,该算法也分配分数。
如何设计索引,以便可以查询搜索以组合标记并返回最相关的结果? 示例,搜索java + learning
我最初为每个标签创建了一个FIELD,并使用排名来提升每个文档的字段。 就性能而言,这是一种好方法吗? 如果我有10,000个可能的标签怎么办? 在Lucene中拥有10,000个FIELDS是个好主意吗?
Field tag = new Field(
FIELD_TAG+tag.getId(),
"y",
Field.Store.NO,
Field.Index.NOT_ANALYZED);
tag.setBoost(tag.getRank());
luceneDoc.add(tag);
如果我将所有标签添加到同一字段中,如何考虑排名?
我在搜索中也遇到了这个问题...告诉我我错了...
好处是,如果您可以让“ Tags”之类的字段包含值“ java learning bug Architecture”,并使用WhiteSpaceTokenizer:
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WhitespaceTokenizerFactory
但是这样做不能使每个单词都步步高升,却可以增强“标签”字段。
当用户搜索“ java bug”或“ java体系结构”时,这样做的Lucene得分不会很高,但是会返回所有包含此单词的文档。
但是您可以像您说的那样做很多“标记”并增强每个标记...或者创建一个新的查询解析器http://today.java.net/pub/a/today/2003/11/07 /QueryParserRules.html继承edismax(例如),以使字段按您希望的方式工作。
那是你要的吗?
哦,还有一件事,添加很多字段会使文档索引器变慢并且索引变大(搜索可能不好)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.