С наступающим всех!
Обычно для вывода блока "похожих" материалов использую модуль similarterms, но вот один товарищ хочет видеть на сайте блок с нодами похожесть которых определяется не термином а схожими словами в заголовке.
Есть ли решение?
С наступающим всех!
Обычно для вывода блока "похожих" материалов использую модуль similarterms, но вот один товарищ хочет видеть на сайте блок с нодами похожесть которых определяется не термином а схожими словами в заголовке.
Есть ли решение?
Комментарии
solr + views
solr - ну не знаю.
Задача склонения слов не стоит.
То есть заголовки "Маск купил Твиттер" и "Покупка Твиттера Маском" не имеют вообще ничего общего? Тогда еще проще - обычный Search API с db backend.
Да.
Похожие это "Маск купил Твиттер" и "Вася купил пива".
Нутром чую можно без Search API.
Ок, как это сделать через search api?
https://www.drupal.org/docs/8/modules/search-api-solr/search-api-solr-ho...
PS Упс, "more like this" только с solr-бэкендом работает, если верить документации.
Ну тогда просто контекстный фильтр, которому подсунуть заголовок текущей ноды. Возможно через tokens это получится.
Я просто описываю как бы я пробовал делать если бы мне это было нужно. Я этого никогда не делал, и делать сейчас не имею возможности.
Да, все верно, тут солр очень подходит, например заголовки "Маск собритается купить Твиттер", "Маск покупает Твиттер" и "Маск купил Твиттер" говорят об одном и том же событии, просто в разные отметки времени, т.е. - релевантнее некуда.
"Леня Голубков приобрел акции АО МММ" - тоже похожий по смыслу заголовок.
То есть, нужно учитывать морфологию слов (купить - покупает - купил) и синонимы (купил - приобрел).
Это как раз работа для солра.
Мне морфология не особо сейчас нужна.
У меня есть в голове идея взять заголовок ноды черeз views и исходя из этого заголовка вывести результаты поиска.
Можно как-то использовать контекстный фильтр Search: Search Keywords от ядра Друпала и Search: Fulltext от search api?
Ок, подскажите: как поставить SOLR?
Инструкцию нашел тут.
https://www.drupal.org/docs/8/modules/search-api-solr/search-api-solr-ho...
Окружение - docker4drupal
Отсюда https://solr.apache.org/downloads.html взял Binary releases, распаковал в папку SOLR_version в ту же папку где composer.json проекта (или надо в web/ ? )
Настройки search api сервера:
Пишет.
The Solr server could not be reached or is protected by your service provider.
При попытке получить config.zip выдает:
An error occurred during the creation of the config.zip. Look at the logs for details.
В журнале:
Drupal\search_api_solr\SearchApiSolrException: The config-set could not be created because the targeted Solr version is missing. In case of an auto-detection of the version the Solr server might not be running or is not reachable or the API is blocked (check the log files). As a workaround you can manually configure the targeted Solr version in the settings. in Drupal\search_api_solr\Controller\SolrConfigSetController->getConfigFiles() (line 296 of /var/www/html/web/modules/contrib/search_api_solr/src/Controller/SolrConfigSetController.php).
Что делать?
Если у тебя docker4drupal, просто раскомментируй в docker-compose.yml сервис solr
Да, раскомментровал перед действиями предыдущего комментария. Ошибка в предыдущем комменте остается.
Хост не локалхост, а solr
Solr node: solr
?
Все тоже самое. Не уходит ошибка.
Solr connector попробуй стандарт
эээээммммм....
Это (?):
https://doc.akka.io/docs/alpakka/0.18/solr.html
с чем его пробовать то?
Поставил. Все равно ошибка, что выше возникает.
https://wodby.com/docs/1.0/stacks/solr-drupal/
Там, оказывается, многое поменялось с тех пор, как яэтим пользовался. Попробуй всё по этой инструкции сделать.
Раскомментировал zookeeper в docker-compose.yml.
Создал новый сервер с настройками:
Password - придумал
Upload Configset:
В результате наблюдаю:
Server Connection
Collection Connection
Additional information
An error occurred while trying to retrieve additional information from the Solr server: Solr endpoint http://solr:8983/ not found (code: 404, body: <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> <title>Error 404 Not Found</title> </head> <body><h2>HTTP ERROR 404 Not Found</h2> <table> <tr><th>URI:</th><td>/solr/default/admin/luke</td></tr> <tr><th>STATUS:</th><td>404</td></tr> <tr><th>MESSAGE:</th><td>Not Found</td></tr> <tr><th>SERVLET:</th><td>default</td></tr> </table> </body> </html> , message: Solr HTTP error: OK (404) <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> <title>Error 404 Not Found</title> </head> <body><h2>HTTP ERROR 404 Not Found</h2> <table> <tr><th>URI:</th><td>/solr/default/admin/luke</td></tr> <tr><th>STATUS:</th><td>404</td></tr> <tr><th>MESSAGE:</th><td>Not Found</td></tr> <tr><th>SERVLET:</th><td>default</td></tr> </table> </body> </html> ).
Но так же не должно быть?
А зачем ты включил basic auth?
[извиняюсь не ту ссылку под комментарием нажал ]
https://wodby.com/docs/1.0/stacks/solr-drupal/
А если рассмотреть работу не на D4D, а на реальном сервере, то как?
Solr должен быть в ОС сервера добавлен или отсюда его качать https://solr.apache.org/downloads.html ?
Если качать, то Binary releases? В ту же папку, что и composer.json лежит или в web?
Если без докера, то обычно солр ставится в /opt/solr
Drupal - это php приложение, а solr - это java-приложение, поэтому solr нужно устанавливать не в друпал, а в операционную систему.
Да, качаешь оттуда последнюю версию, под которую в search_api_solr есть темплейты конфигов, т.е. - Solr 8.11.2.zip и кладешь ее в
/opt
Из архива достаешь скрипт
bin/install_solr_service.sh
и кладешь его в/opt
рядом с архивом, задаешь ему право на исполнение, если сразу нет:chmod +x /opt/install_solr_service.sh
и запускаешь от рута:/opt/install_solr_service.sh
скрипт создаст пользователя solr и все необходимые сервисы. Ядра будут лежать в
/var/solr/data/
, в поддиректории/var/solr/data/<corename>/conf
надо будет потом подкидывать друпальные конфиги. Все правки там делаются от пользователя solr:sudo su - solr
Затем можно в
/etc/default/solr.in.sh
поменять хост на 127.0.0.1, чтобы солр не светил наружу.Поставить solr - это просто архив распаковать? Если да то вроде ж директория не особо важна?
Собственно команда
SOLR_version/bin/solr start -e cloud -noprompt
Выдает:
Starting up 2 Solr nodes for your example SolrCloud cluster.
Creating Solr home directory /var/www/sitename.com/SOLR_version/example/cloud/node1/solr
Cloning /var/www/sitename.com/SOLR_version/example/cloud/node1 into
/var/www/sitename.com/SOLR_version/example/cloud/node2
Starting up Solr on port 8983 using command:
"/var/www/sitename.com/SOLR_version/bin/solr" start -cloud -p 8983 -s "SOLR_version/example/cloud/node1/solr"
WARNING: Starting Solr as the root user is a security risk and not considered best practice. Exiting.
Please consult the Reference Guide. To override this check, start with argument '-force'
ERROR: Failed to start Solr using command: "/var/www/sitename.com/SOLR_version/bin/solr" start -cloud -p 8983 -s "SOLR_version/example/cloud/node1/solr" Exception : org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
Что ему не хватает?
пиши в телегу, поставлю на сервере.
Поставили с на сервере, благодаря voviko. Да надо бы мануал запилить, но пока в этом плаваю.
Вырисовался такой вопрос:
Во вьюхе на search api индекса с контекстным фильтром more like this не работает сортировка ни по дате ни по ID нод. Это так и надо или что-то можно предпринять?
А дата или ID нод добавлены в индекс?
Да. Собственно я не один такой.
https://www.drupal.org/project/search_api/issues/3292012
Дополнительные модули ставить для сортировки?
Вероятно сортировка не работает из-за того, что more like this в первую очередь сортирует по "похожести", а остальные сортировки идут потом. Но это только предположение.