solr - 使用/solr/update 建立索引时如何提升 SOLR 文档

标签 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 格式发布,我可以为整个文档或特定字段指定 boost 值。但是如果我这样做,则不清楚如何将文件指定为文档内容。实际上,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 中索引文档,您必须将其 POST 到/update 处理程序。要索引的文档放在 POST 请求的正文中。一般来说,你必须使用 xml format format of Solr .使用该 xml,您可以向特定字段或整个文档添加 boost 值。

关于solr - 使用/solr/update 建立索引时如何提升 SOLR 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940706/

相关文章:

search - Solr 阿拉伯语

solr - 如何使用 Solr 的 FileListEntityProcessor 在搜索结果中显示文件名

pdf - Solr ExtractingRequestHandler为pdf文档提供空内容

java - 需要 OLS(Oracle 标签安全)时的 Lucene/Solr 安全

solr - 将自定义 Lucene 索引配置转换为 Sitecore 中的 Solr

java - Apache 提卡 : remove extra line breaks in result string

grails - Grails-Tika内容操纵

Solr ExtractingRequestHandler 在链接中提取 "rect"

PHP mysql_fetch_assoc 仅返回 1