CFSearch + Solr: игнорирование HTML в поисках - PullRequest
2 голосов
/ 26 февраля 2012

У меня проблема, и Google не сильно мне помог.Я пытаюсь найти способ игнорировать HTML при поиске индекса Solr в ColdFusion (9).

Например, если я ищу microsoft, а мой индекс содержит Microsoft© makes Windows®, мне предлагаетсяищите «Microsoft © делает Windows®» вместо того, чтобы показывать фактический результат.

Как вы можете видеть ниже, я просто передаю строку в свойство критериев cfsearch - но опять же - выполнение этого приводит к (чтоЯ считаю, что это "грязный" результат.

  <cfsearch
      collection="mycollection"
      criteria="microsoft"
      name="results"
      maxrows="100"
      suggestions="always"
      contexthighlightbegin="<strong>"
      contextHighlightEnd="</strong>"
      contextPassages="3"
      />

Я искал документацию для Синтаксис запроса Solr , но я не вижу ничего, что выскакивает из меняо том, как избежать этой проблемы.

Стоит ли указывать в индексе "плоскую" версию текста или есть способ избежать строк HTML, таких как &copy; / &reg; / &trade;?

I 'Я открыт для предложений.

- Брайан.

Ответы [ 2 ]

3 голосов
/ 26 февраля 2012

Проверьте, установлено ли поле Solr, которое вы используете для поиска, с типом поля String, а не с Text (который допускает токенизацию и другой анализ текста).См. этот вопрос для получения дополнительной информации об этом.

В случае, если действительно существует проблема с удалением HTML, вам придется добавить HTMLStripCharFilterFactory в конфигурацию типа вашего поля, который удаляет HTML-теги из проиндексированного поля.

1 голос
/ 27 февраля 2012

Для тех, кто может столкнуться с таким же вопросом:

Решение этого вопроса состояло в том, чтобы использовать альтернативный метод индексации, а не пытаться обходить HTML внутри индекса.

В базе данных я создал новое поле с именем index_search и в своем методе вставки в своем приложении я использовал регулярное выражение для пропуска любых специальных (er) символов: "[^[:word:].[:space:]-]"

Оттуда я передал поле index_search в тело cfindex и использовал имя HTML в качестве заголовка:

  <cfindex
    collection="mycollection"
    action="update"
    body="name_search,html_description"
    title="name_html"
    key="UUID"
    query="data">

Использование этого метода позволило получить ожидаемый результат при поиске слов или фраз, близких или завернутых в HTML. IE: Поиск microsoft выдаст список всех результатов с Microsoft© в нем.

...