Чтобы проиндексировать мой сайт, у меня есть скрипт 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 \
'<commit/>' -H 'Content-type:text/xml; charset=utf-8'
Это загружает все документы из корня моего документа в Solr.Я использую tika и ExtractingRequestHandler для загрузки документов в различные форматы (в основном, PDF и HTML) в Solr.
В сценарии, который генерирует этот сценарий оболочки, я хотел бы повысить некоторые документы на основесоответствует ли их поле id (a / k / a url) определенным регулярным выражениям.
Допустим, это правила повышения (псевдокод):
boost = 2 if url =~ /cool/
boost = 3 if url =~ /verycool/
# otherwise we do not specify a boost
Какой самый простой способ добавить это увеличение индекса в мой запрос http?
Iпробовал:
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, я могу указать значение повышения для всего документа или конкретного поля.Но если я это сделаю, не ясно, как указать файл в качестве содержимого документа.На самом деле, 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) указать повышение для определенных документов