Как искать поле, которое может содержать пробелы, - и объединенное число.? - PullRequest
0 голосов
/ 13 ноября 2018

Привет, у меня есть поле со следующей схемой:

  <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" generateNumberParts="1" protected="protwords.txt" splitOnCaseChange="1" generateWordParts="0" preserveOriginal="1" catenateAll="0" catenateWords="1"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="0" protected="protwords.txt" splitOnCaseChange="1" generateWordParts="0" preserveOriginal="1" catenateAll="0" catenateWords="0"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    </analyzer>
  </fieldType>

Я храню полные документы в формате PDF.

Теперь предположим, что у меня есть 4 документа со следующим содержимым.

1. stackoverflow is a good site.
2. stack-overflow is a good site.
3. stack overflow is a good site.
4. stackoverflow2018 is a good site. 

Теперь, когда я ищу stackoverflow Он должен вернуть меня 1, когда я ищу stack-overflow, он должен вернуть меня 2. Когда я ищу stack overflow, он должен вернуть меня 3. Когда я ищу stackoverflow2018, он долженверните мне 4.

какая схема для нее схема не работает в этом случае.Есть ли что-то, что я мог бы указать в запросе?

1 Ответ

0 голосов
/ 13 ноября 2018

A Фильтр графиков с разделителями слов будет делиться на не алфавитно-цифровые (-), изменения регистра и цифры по умолчанию.

Правила определения разделителей определяются следующим образом:

Изменение регистра в слове: «CamelCase» -> «Camel», «Case». это можно отключить, установив splitOnCaseChange = "0".

Переход от буквенных к числовым символам или наоборот: "Gonzo5000" -> "Gonzo", "5000", "4500XL" -> "4500", "XL". Это может быть отключается установкой splitOnNumerics = "0".

Не алфавитно-цифровые символы (отбрасываются): «горячая точка» -> «горячая точка», «точка»

Удалены завершающие "'": "O’Reilly's" -> "O", "Reilly"

Любые начальные или конечные разделители отбрасываются: "--hot-spot--" -> «горячий», «точечный»

Если вам не нужно такое поведение, удалите WordDelimiterFilter из списка фильтров и добавьте другие фильтры для поддержки необходимой вам части поведения WDF.

...