【问题标题】:How to boost a SOLR document when indexing with /solr/update使用 /solr/update 进行索引时如何提升 SOLR 文档
【发布时间】:2011-06-23 20:46:48
【问题描述】:

为了索引我的网站,我有一个 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 格式发布,我可以为整个文档或特定字段指定提升值。但是如果我这样做,则不清楚如何将文件指定为文档内容。实际上,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) 为某些文档指定 boost

【问题讨论】:

    标签: solr apache-tika solr-cell


    【解决方案1】:

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

    【讨论】:

    • 到目前为止,我一直没有使用 XML 格式。如果我使用 XML 格式,如何上传文件(PDF 或 HTML)作为文档正文?
    • 抱歉,我没有注意到您使用的是 ExtractingHandler... 您用来指定字段提升的语法是正确的 (boost.field=value)。但我注意到您正在提升 id 字段。为了有效,索引时间提升应该在您将查询的字段上(请参阅wiki.apache.org/solr/SolrRelevancyFAQ#index-time_boosts)。
    • 谢谢。我终于让它工作了:curl -s "http://localhost:8983/solr/update/extract?literal.id=/mydoc.html&amp;commit=false&amp;boost.text=3" -F "myfile=@mydoc.html"我还必须更改我的搜索表单以明确搜索 tika 放置 PDF 等所有内容的“文本”字段。谢谢。
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多