Добавьте в свой анализатор фильтр для фазы индекса и запроса.
<filter class="solr.PatternReplaceFilterFactory" pattern="([^A-Za-z0-9])" replacement="" replace="all"/>
Это заменит все буквы из маркеров, кроме a-z
, A-Z
и 0-9
. Чтобы протестировать это, вам может потребоваться повторная индексация ваших данных, потому что ваши индексированные данные будут иметь пунктуации. или вы можете попробовать в пользовательском интерфейсе solr admin, разделе анализа.
Другой подход, используя другой токенизатор вместо StandardTokenizerFactory
в фазе анализатора. Вы можете использовать LetterTokenizerFactory
, который создает маркеры, состоящие из строк смежных букв. Любые небуквенные символы будут отброшены. Но это может создать много дополнительного токена, которого вы, возможно, не захотите. Пожалуйста, проверьте, прежде чем делать.
Example: "I can't" ==> "I", "can", "t"
Update
Если вам нужно использовать WordDelimiterFilter
фильтр. Попробуйте ниже конфигурацию:
<filter class="solr.WordDelimiterFilter" generateWordParts="1" catenateWords="1" splitOnCaseChange="0" generateNumberParts="0" splitOnCaseChange="0"/>
Это будет расщепляет слов на разделителей и сцепить их снова. Все остальные расколы turned off
, как numeric strings
, camel-case change
и transitions from alpha to numeric
. При необходимости вы можете указать turn on
, указав non-zero
.
вы можете указать запрос? Какие два вопроса используются, не ясны из вопроса? – YoungHobbit
http: // localhost: 8983/solr/food/select? Q = butter & wt = json & indent = true Это не работает –
Вы также можете предоставить то, что работает? – YoungHobbit