2013-09-27 9 views
0

Я хочу, чтобы некоторые поля, такие как URL-адреса, были проиндексированы и сохранены, но не анализировались. Класс поля имел конструктор, который мог бы сделать то же самое.Как предотвратить поле не анализировать в lucene

Field(String name, String value, Field.Store store, Field.Index index) 

Но этот конструктор является устаревшим с Lucene 4 и предлагается использовать Стрингфилд или TextField объектов. Но у них нет конструкторов, чтобы указать, какое поле нужно индексировать. Так это можно сделать?

+0

возможно дубликат [Как управлять Индексирование поля в lucene 4.0] (http://stackoverflow.com/questions/18564029/how-to-control-indexing-a-field-in-lucene-4-0) – femtoRgon

ответ

4

Правильный способ индексирования и хранения неанализируемого поля в качестве единственного токена - использовать StringField. Он предназначен для обработки атомных строк, как идентификационные номера, URL и т.д. Вы можете указать, что хранится ли сходство в Lucene 3.X

Такие, как:

new StringField("myUrl, "http://stackoverflow.com/questions/19042587/how-to-prevent-a-field-from-not-analyzing-in-lucene", Field.Store.YES) 
-1

Привет, вы совершенно правы с тем, что вы говорите. С новыми полями, предоставленными Lucene, вы не сможете достичь того, чего хотите. Вы можете продолжить использование поля, как описано или реализовать свое собственное поле, используя интерфейс IndexableField. там вы можете сами решить, какое поведение вы хотите, чтобы ваше поле имело.

+0

всякий раз, когда что-то устарело, всегда есть альтернативный лучший способ сделать это. поэтому я думаю, что должно быть что-то. Я мог бы продолжать использовать его, но когда появится более поздняя версия, это будет полностью удалено и может возникнуть проблемы позже. – Hasif

+1

Я снова прочитал документацию по StringField, и по умолчанию StringField не анализируется, поскольку он не является токенированным. Он индексируется и сохраняется как одно значение по своему желанию. [StringField] (http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/document/StringField.html) – Esquive

+0

Имейте в виду, что если вам нужно больше конфигураций, которые менее распространены, вам необходимо реализовать свои собственные поля или продолжить использование типа поля. Как вы уже указывали. Внедрение собственной области безопаснее в случае выпуска новых версий. – Esquive

Смежные вопросы