我想动态地向用户显示哪个字段与发送给Solr的查询匹配。例如,如果我有一份文件
document
field1: "yay"
field2: "nay"
dynamic_field_hurr_*:
one: "yay"
two: "nay"
我查询“yay”,我是否有可能知道yay是在field1和dynamic_field_hurr_one中找到的?
我觉得我已经浏览了整个文档,并认为我应该使用突出显示,但我不能让它在动态字段上工作。在正常的字段上它工作正常!
一点背景:我正在使用Solr.Net,在课堂上我映射到我的文档,我有一个IDictionary<string, string>
来动态添加其他信息。经过一些阅读后,我认为字典映射到动态字段,除了突出显示外,它完美地运行。
我还尝试将动态字段中的所有数据复制到文本字段中,但我认为没有办法复制“实际字段名称”?我只能让Solr复制该值,我认为这是合理的。
有什么想法吗?
答案 0 :(得分:7)
有一种间接的方法可以使用一个非常有趣的工具,点击突出显示。
使用默认的solr架构来理解解决方案:
http://localhost:8983/solr/collection1/select?q=iPod&wt=xml&indent=true&hl=on&hl.fl=name,description
看看:
<lst name="highlighting">
<lst name="IW-02">
<arr name="name">
<str><em>iPod</em> & <em>iPod</em> Mini USB 2.0 Cable</str>
</arr>
</lst>
<lst name="F8V7067-APL-KIT">
<arr name="name">
<str>Belkin Mobile Power Cord for <em>iPod</em> w/ Dock</str>
</arr>
</lst>
<lst name="MA147LL/A">
<arr name="name">
<str>
Apple 60 GB <em>iPod</em> with Video Playback Black
</str>
</arr>
</lst>
</lst>
所以,在这里你有匹配的字段。您可以选择忽略实际突出显示部分的其余部分,并仅使用与您的目的匹配的字段名称。
所以你会在你的案例&hl=on&hl.fl=dynamic_field_hurr_one,dynamic_field_hurr_two
答案 1 :(得分:3)
为了完整性,还有另一种方法可以在不使用突出显示的情况下获取此信息(突出显示强制某些条件,例如强制存储的字段)