Как игнорировать точки и другие символы при поиске в solr - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть ссылочные номера внутри поля solr, которые выглядят так:

L2.816.4.53.2
42010N-0002
42010N/0002

Теперь я хочу найти его и найти соответствие для строки без точек / тире / слешей:

L28164532
42010N0002
42010N0002

Как я могу сделать это с помощью Solr?Текущий поиск ref:L28164532 не вернет результат, так как не сохранено такое значение.

1 Ответ

0 голосов
/ 12 декабря 2018

Можете ли вы использовать приведенный ниже тип поля для своего поля:

<fieldType name="text_wd" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
          <!-- Splits words based on whitespace characters --> 
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <!-- splits words at delimiters based on different arguments --> 
          <filter class="solr.WordDelimiterGraphFilterFactory" preserveOriginal="1" catenateNumbers="1"/>
          <!-- Transforms text to lower case -->   
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>

        <analyzer type="query">
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
  </fieldType>

Здесь WordDelimiterGraphFilterFactory имеет много атрибутов, и их использование поможет вам достичь желаемого результата.Вы можете узнать больше о WordDelimiterGraphFilterFactory здесь

, например catenateWords или catenateAll или catenateNumbers.Измените атрибуты согласно требованию.После внесения изменений может потребоваться перезапустить сервер.Вы можете попробовать и протестировать их с помощью интерфейса администратора Solr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...