Solr: полоса пунктуации перед указателем - PullRequest
5 голосов
/ 30 июня 2010

У меня проблема с чередованием знаков препинания из индекса solr Если после слова стоит знак пунктуации, это слово не индексируется должным образом.

Например: если мы индексируем «привет, Джон», ресурс не будет найден по ключевому слову «привет», тогда как при удалении запятой после слова «привет» проблем не будет.

Есть ли FilterFactory, который предполагает удаление знаков препинания? Есть идеи?

Спасибо, Богдан.

Ответы [ 3 ]

7 голосов
/ 08 октября 2010

Вы можете использовать solr.PatternReplaceFilterFactory, чтобы убрать начальную и конечную пунктуацию с помощью:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^\p{Punct}*(.*?)\p{Punct}*$"
    replacement="$1"/>

И если вы хотите удалить все знаки препинания в начале и конце, кроме (например) знака доллара перед словом, вы можете использовать это:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$"
    replacement="$1"/>
6 голосов
/ 30 июня 2010

Это делается с помощью WordDelimiterFilterFactory. Установите generateWordParts = 1.

Существует также PatternTokenizerFactory , который можно использовать, но я никогда не пробовал.

0 голосов
/ 04 декабря 2012

Использовать PatternReplaceFilterFactory

<!-- remove punctuation -->
    <filter class="solr.PatternReplaceFilterFactory" pattern="^(\p{Punct}*)(.*?)(\p{Punct}*)$" replacement="$2"/>
    <filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>

...

...