Для индексации моего веб-сайта у меня есть сценарий Ruby, который, в свою очередь, генерирует сценарий оболочки, который загружает каждый файл в корень моего документа в Solr. В сценарии оболочки есть много строк, которые выглядят так:
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 \
' ' -H 'Content-type:text/xml; charset=utf-8'
Это загружает все документы из моего корня документов в Solr. Я использую tika и ExtractingRequestHandler для загрузки документов в различных форматах (в основном PDF и HTML) в Solr.
В сценарии, который генерирует этот сценарий оболочки, я хотел бы улучшить определенные документы в зависимости от их идентификатора field (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
Ни один из них не сделал разница в порядке результатов поиска. Я хочу, чтобы улучшенные результаты были первыми в результатах поиска, независимо от того, что искал пользователь (при условии, конечно, что документ содержит их запрос).
Я понимаю, что если я отправлю POST в формате XML, я могу указать значение повышения либо для всего документа, либо для определенного поля. Но если я это сделаю, непонятно, как указать файл в качестве содержимого документа. На самом деле, страница тика предоставляет частичный пример:
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'
Ни один из них не изменил результаты поиска.
Есть ли способ обновить только атрибут повышения документа (а не конкретное поле) без изменения содержимого документа? Если так, то я могу достичь своей цели за два шага: на странице тика приведен частичный пример:
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'
Ни один из них не изменил результаты поиска.
Есть ли способ обновить только атрибут повышения документа (а не конкретное поле) без изменения содержимого документа? Если да, то я могу достичь своей цели за два шага: на странице тика приведен частичный пример:
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'
Ни один из них не изменил результаты поиска.
Есть ли способ обновить только атрибут повышения документа (а не конкретное поле) без изменения содержимого документа? Если так, то я могу достичь своей цели за два шага: 1) Загрузите / проиндексируйте документ, как это делал я 2) Укажите ускорение для определенных документов