另请参阅:determine which value produced a hit in SOLR multivalued field type
此问题已被提出并已于2010年1月得到解答。
使用新的Solr版本,最新的稳定版本为3.5.0,是否存在任何Solr功能来识别导致命中的多值字段。
For Ex:
<field name="id">ID</field>
<field name="field1">Term1</field>
<field name="field1">value2</field>
<field name="field1">Term2</field>
如果我执行搜索,
qf=field1&q=Term
有没有办法可以知道值Term1和Term2导致Solr返回结果的命中?
答案 0 :(得分:0)
您可以尝试使用Analyzer#getPositionIncrementGap和IndexReader#getTermVectors来计算包含field1
的{{1}}个实例。
例如,如果您有少于10个Term
个实例,并且每个实例的术语少于100个,那么使用10 {100 = 1000的field1
将帮助您计算包含哪个字段positionIncrementGap
使用Term
。
请注意,您必须在编制索引时启用term vectors (with positions)才能执行此操作。
请注意这是一个黑客,虽然我可以用它进行测试,但我可能不会在任何严肃的软件中这样做。