为了索引我的网站,我有一个 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 和 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 页面提供了一个部分示例:
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'
两者都没有改变搜索结果。
Is there a way to update just the boost attribute of a document (not a specific field) without altering the document contents? If so, I could accomplish my goal in two steps: 1) Upload/index document as I have been doing 2) Specify boost for certain documents