Saturday, February 25, 2006

org.apache.lucene.document.Field has been deprecated

I have been working on getting Lucene to work with Ruby on Rails. In my SearchServer.java, I kept getting the following messages on compile:


Note: SearchServer.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: SearchServer.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.



Then I executed:

javac SearchServer.java -Xlint:deprecation


and got the output:

SearchServer.java:297: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated
doc.add(Field.Text("title", RS.getString("title")));
^
SearchServer.java:298: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated
doc.add(Field.Text("type", "article"));
^
SearchServer.java:299: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated
doc.add(Field.Text("author", RS.getString("author")));
^
SearchServer.java:300: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated
doc.add(Field.Text("body", RS.getString("body")));
^
SearchServer.java:301: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated
doc.add(Field.Text("extended", RS.getString("extended")));
^
SearchServer.java:302: warning: [deprecation] Text(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated
doc.add(Field.Text("tags", RS.getString("tags")));

warning: [deprecation] UnIndexed(java.lang.String,java.lang.String) in org.apache.lucene.document.Field has been deprecated



After researching online I confirmed that the document.Field has infact been deprecated. What this means is that if you were to upgrade Lucene these functions may no longer be available.

The correct functions are mentioned in the Lucene demos that come with 1.9


/**
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

.................

public class FileDocument {
/** Makes a document for a File.
<p>
The document has three fields:
<ul>
<li><code>path</code>--containing the pathname of the file, as a stored,
untokenized field;
<li><code>modified</code>--containing the last modified date of the file as
a field as created by <a
href="lucene.document.DateTools.html">DateTools</a>; and
<li><code>contents</code>--containing the full contents of the file, as a
Reader field;
*/
public static Document Document(File f)
throws java.io.FileNotFoundException {

// make a new, empty document
Document doc = new Document();

// Add the path of the file as a field named "path". Use a field that is
// indexed (i.e. searchable), but don't tokenize the field into words.
doc.add(new Field("path", f.getPath(), Field.Store.YES, Field.Index.UN_TOKENIZED));

// Add the last modified date of the file a field named "modified". Use
// a field that is indexed (i.e. searchable), but don't tokenize the field
// into words.
doc.add(new Field("modified",
DateTools.timeToString(f.lastModified(), DateTools.Resolution.MINUTE),
Field.Store.YES, Field.Index.UN_TOKENIZED));

// Add the contents of the file to a field named "contents". Specify a Reader,
// so that the text of the file is tokenized and indexed, but not stored.
// Note that FileReader expects the file to be in the system's default encoding.
// If that's not the case searching for special characters will fail.
doc.add(new Field("contents", new FileReader(f)));

// return the document
return doc;
}

1 Comments:

At 1:51 PM, Blogger Unknown said...

Thanks!
jake@isb

 

Post a Comment

<< Home

eXTReMe Tracker