使用/ solr / update进行索引时如何提升SOLR文档

时间:2011-02-09 02:24:10

标签: solr apache-tika solr-cell

为了索引我的网站,我有一个Ruby脚本,该脚本又生成一个shell脚本,将我的文档根目录中的每个文件上传到Solr。 shell脚本有许多行,如下所示:

  curl -s \
 "http://localhost:8983/solr/update/extract?literal.id=/about/core-team/&commit=false" \
 -F "myfile=@/extra/www/docroot/about/core-team/index.html"

......并以:

结束
curl -s http://localhost:8983/solr/update --data-binary \
'<commit/>' -H 'Content-type:text/xml; charset=utf-8'

这会将我的文档根目录中的所有文档上传到Solr。我使用tika and ExtractingRequestHandler将各种格式的文档(主要是PDF和HTML)上传到Solr。

在生成此shell脚本的脚本中,我想基于其id字段(a / k / a url)是否与某些正则表达式匹配来提升某些文档。

让我们说这些是提升规则(伪代码):

boost = 2 if url =~ /cool/
boost = 3 if url =~ /verycool/
# otherwise we do not specify a boost

将索引时间提升添加到我的http请求的最简单方法是什么?

我试过了:

curl -s \
 "http://localhost:8983/solr/update/extract?literal.id=/verycool/core-team/&commit=false" \
 -F "myfile=@/extra/www/docroot/verycool/core-team/index.html" \
 -F boost=3

curl -s \
 "http://localhost:8983/solr/update/extract?literal.id=/verycool/core-team/&commit=false" \
 -F "myfile=@/extra/www/docroot/verycool/core-team/index.html" \
 -F boost.id=3

两者都没有对搜索结果的排序产生影响。我想要的是在搜索结果中首先提升结果,无论用户搜索的是什么(当然提供文档包含他们的查询)。

据我所知,如果我以XML格式发布POST,我可以为整个文档或特定字段指定提升值。但是,如果我这样做,则不清楚如何将文件指定为文档内容。实际上,tika page提供了一个部分示例:

curl "http://localhost:8983/solr/update/extract?literal.id=doc5&defaultField=text" \
--data-binary @tutorial.html -H 'Content-type:text/html'

但同样不清楚在哪里/如何指定我的助推器。我试过了:

curl \ 
"http://localhost:8983/solr/update/extract?literal.id=mydocid&defaultField=text&boost=3"\
--data-binary @mydoc.html -H 'Content-type:text/html'

curl \ 
"http://localhost:8983/solr/update/extract?literal.id=mydocid&defaultField=text&boost.id=3"\
--data-binary @mydoc.html -H 'Content-type:text/html'

这两项都没有改变搜索结果。

有没有办法在不更改文档内容的情况下更新文档的boost属性(不是特定字段)?如果是这样,我可以通过两个步骤完成我的目标: 1)像我一直在做的上传/索引文档 2)指定某些文件的提升

1 个答案:

答案 0 :(得分:3)

要在Solr中索引文档,您必须将其POST到/ update处理程序。要索引的文档放在POST请求的主体中。通常,您必须使用xml format format of Solr。使用该xml,您可以将增强值添加到特定字段或整个文档。