2012-01-11 2 views
0

Мы храним большое количество твитов и блогов в solr.Solr Search Issue

Теперь, если пользователь выполняет поиск упоминаний Twitter, таких как @rohit, также возвращаются записи, которые содержат слово rohit. Даже если мы делаем точное соответствие «@rohit», я понимаю, это происходит из-за использования WordDelimiterFilterFactory, который расщепляет на специальных Charaters,

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory 

Как я могу заставить Solr не возвращаться без «@». Я не хочу удалять WordDelimiterFilterFactory, так как splitOnCaseChange и stemEnglishPossessive полезны? Надеюсь, я прояснился.

С уважением,

Рохит

ответ

2

Если вы установите preserveOriginal = "1" эта проблема должна быть исправлена. Если не ваш токенизатор может лишить @, так что вам нужно выбрать другой, например, solr.WhitespaceTokenizerFactory.

+0

Просто из любопытства, каковы преимущества использования WordDelimiterFilterFactory над whitespacetokenizerfactory? – sesmic

+0

Вы не используете один над другим. При использовании WhitespaceTokenizerFactory вам действительно нужен WordDelimiterFilterFactory, чтобы использовать термины, используемые для поиска. –

1

Что бы я сделал, это создать новый fieldType с preserveOriginal = "1" в нем. Затем вы можете создать поле для копирования в старый тип fieldType. Таким образом, вы получите две разные версии поля, которые можно искать, просто потому, что иногда вам нужно искать без «@». Что вы можете сделать тогда, если кто-то ищет с некоторыми специальными символами, например, «@», они будут искать сохраненное исходное поле, иначе поиск по умолчанию будет нормальным.