有没有办法限制查询中文本字段中的文本数量?这是一个快速的场景......
我有两个字段:
我将查询docId字段,并希望从200个字符的文本字段中获取“预览”文本。平均而言,文本字段有600-2000个字符,但我只需要预览。
例如。 [mySolrCore] /选择Q =的docId:123安培; FL =文本
?有没有办法做到这一点,因为如果我只需要一个小预览,我没有看到带回整个文本字段的重点?
我不是在看热门高亮,因为我没有在文本字段中搜索特定文本,但是如果hl.fragsize参数有类似的功能,那就太棒了!
希望有人能指出我正确的方向!
干杯!
答案 0 :(得分:4)
您必须测试此解决方案的性能,而不仅仅是返回整个字段,但它可能适用于您的情况。基本上,在不匹配的字段上打开突出显示,然后使用备用字段返回所需的有限字符数。
http://solr:8080/solr/select/?q=*:*&rows=10&fl=author,title&hl=true&hl.snippets=0&hl.fl=sku&hl.fragsize=0&hl.alternateField=description&hl.maxAlternateFieldLength=50
注意:
我发现运行荧光笔的cpu成本有时高于cpu成本和返回整个字段的带宽。你必须要做实验。
答案 1 :(得分:3)
我决定将我的评论转为答案。
我建议您不要将文本数据存储在Solr / Lucene中。仅索引数据以进行搜索并存储唯一ID或URL以标识文档。应从单独的存储系统中获取文档的内容。
Solr / Lucene针对搜索进行了优化。它们不是您的数据仓库或数据库,不应该以这种方式使用它们。当您在Solr中存储的数据超过必要时,会对整个搜索系统产生负面影响。膨胀索引的大小,增加主服务器和从服务器之间的复制时间,复制只需要单个副本的数据,并在文档缓存上浪费缓存内存,以便更快地进行搜索。
所以,我会建议两件事。
首先,最佳地从搜索索引中删除整个文本存储。从优化用于保存文档的辅助系统(如文件服务器)中获取预览文本和整个文本。
其次,次优,仅将预览文本存储在搜索索引中。将整个文档存储在其他位置,例如文件服务器。
答案 2 :(得分:0)
你可以添加一个额外的字段,例如excerpt / summary,它包含文本中的前200个字符,然后返回该字段
答案 3 :(得分:0)
我怀疑,许多网站都赞同我的愿望,就是在每个查询响应中提供一小段文字。这可以升级用户从单纯的标题或同等标题中看到的内容。这是正常的(以Google为例)和富有成效的技术。 目前,我们无法轻松应对将Solr / Lucene的整个内容体发送到Web演示程序并在那里创建片段,以及一组响应中的许多其他内容,因为这是一个重要的网络,CPU和内存耗尽(想想处理许多多MB文件。)
理所当然的是,Solr / Lucene可以根据请求控制仅发送前N个字节的内容,从而在现场省去了很多麻烦。带有高光等的Kludges就是这样,并干扰正确使用。我们记住,将材料送入Solr / ucene的机制可能无法解析文件,因此这些馈送器无法创建片段。
答案 4 :(得分:-2)
Linkedin实时搜索 http://snaprojects.jira.com/browse/ZOIE
用于存储大数据 http://project-voldemort.com/