В иерархических фасетах Solr есть ли способ использовать другой символ, кроме «/», для разделения узлов в поле пути иерархического фасетирования?

Мне требуется ваша помощь.

Я работаю над веб-сайтом Typo3 о математике, и мы используем:

  • Сервер Solr для предоставления поисковой системы.
  • Расширение Typo3 Solr для обеспечения соединения между нашей CMS Typo3 и нашим сервером Sorr.

У нас есть проиндексированные объекты, организованные в виде дерева, и мы используем это дерево для обеспечения иерархического представления фасетов для поиска. Для этого мы программно генерируем и поддерживаем строку пути, которую использует Solr.

Но, к сожалению, у нас есть косая черта «/» в заголовках некоторых наших индексированных объектов (например, тех, которые содержат дроби), и это приводит к непредсказуемым результатам при рендеринге иерархических фасетов на основе этих заголовков, потому что Solr интерпретирует косые черты как дочерний узел .

Мы не можем использовать энтитизацию и де-энтитизацию HTML, потому что мы потеряли бы функции поиска по именам, если мы не обеспечим повсеместное кодирование и перекодирование специальных символов, на что у нас нет времени.

Мой вопрос прост:

Есть ли способ настроить символ-разделитель для иерархического пути фасетов? Например, в typoScript аккуратный простой ключ конфигурации:

plugin.tx_solr.index.fieldProcessingInstruction.separator = @@@  #<--Whatever...

Я был бы так рад, что мне больше не придется копаться в исходном коде расширения Typo3 Solr, чтобы исправить ошибку на моем веб-сайте!

Спасибо всем за любую подсказку.


person jira    schedule 10.02.2014    source источник
comment
Jira: как вы токенизируете путь в своей настройке? если вы используете ‹tokenizer class=solr.PathHierarchyTokenizerFactory delimiter=\ replace=//›, параметр разделителя может помочь.   -  person leoh    schedule 11.02.2014
comment
Отрицательный. Мы не настраиваем токенизатор для иерархических фасетов. Я пытался исследовать этот трек, но он оказался тупиковым.   -  person jira    schedule 12.02.2014


Ответы (1)


Хорошо, потеряв некоторое время, пытаясь настроить его в файлах schema.xml и general_schema_*.xml, я перешел к исходному коду расширения Typo3 Solr, моего старого ужасного спящего балрога.

Похоже, что символ-разделитель указан жестко запрограммированным в 5 разрозненных файлах классов:

  • class.tx_solr_facet_hierarchicalfacetrenderer.php
  • class.tx_solr_fieldprocessor_pathtohierarchy.php
  • class.tx_solr_facet_hierarchicalfacethelper.php
  • class.tx_solr_fieldprocessor_pageuidtohierarchy.php
  • class.tx_solr_query_filterencoder_hierarchy.php

Все, что я сделал, это заменил его в этих файлах (указав на одну уникальную общедоступную статическую константу, да) и извинился перед моими руководителями за то, что так долго исправлял такую ​​простую и глупую ошибку, и теперь все работает нормально!

person jira    schedule 11.02.2014