Hasif Subair
Hasif Subair

Reputation: 436

How to prevent a field from not analyzing in lucene

I want some fields like urls, to be indexed and stored but not to be analyzed. Field class had a constructor to do the same.

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

But this constructor has been deprecated since lucene 4 and it is suggested to use StringField or TextField objects. But they don't have any constructors to specify which field to be indexed. So can it be done?

Upvotes: 0

Views: 1841

Answers (2)

femtoRgon
femtoRgon

Reputation: 33351

The correct way to index and store an un-analyzed field, as a single token, is to use StringField. It is designed to handle atomic strings, like id numbers, urls, etc. You can specify whether it is stored similarity to in Lucene 3.X

Such as:

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

Upvotes: 4

Esquive
Esquive

Reputation: 181

Hello you are totally right with what you are saying. With the new fields provided by Lucene you cannot achieve what you want. You can either continue using the Field as you described or implement your own field by implementing the interface IndexableField. there you can decide yourself what behaviors you want your Field to have.

Upvotes: -1

Related Questions