Example usage for org.apache.lucene.index IndexWriter getReader

List of usage examples for org.apache.lucene.index IndexWriter getReader

Introduction

In this page you can find the example usage for org.apache.lucene.index IndexWriter getReader.

Prototype

DirectoryReader getReader() throws IOException 

Source Link

Usage

From source file:org.elasticsearch.index.field.data.shorts.ShortFieldDataTests.java

License:Apache License

@Test
public void intFieldDataTests() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true,
            IndexWriter.MaxFieldLength.UNLIMITED);

    indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(4))
            .add(new NumericField("mvalue").setIntValue(104)).build());

    indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(3))
            .add(new NumericField("mvalue").setIntValue(104)).add(new NumericField("mvalue").setIntValue(105))
            .build());/*from   ww w.  ja v  a2s.  c o m*/

    indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(7)).build());

    indexWriter.addDocument(doc().add(new NumericField("mvalue").setIntValue(102)).build());

    indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(4)).build());

    IndexReader reader = indexWriter.getReader();

    ShortFieldData sFieldData = ShortFieldData.load(reader, "svalue");
    ShortFieldData mFieldData = ShortFieldData.load(reader, "mvalue");

    assertThat(sFieldData.fieldName(), equalTo("svalue"));
    assertThat(sFieldData.multiValued(), equalTo(false));

    assertThat(mFieldData.fieldName(), equalTo("mvalue"));
    assertThat(mFieldData.multiValued(), equalTo(true));

    // svalue
    assertThat(sFieldData.hasValue(0), equalTo(true));
    assertThat(sFieldData.docFieldData(0).isEmpty(), equalTo(false));
    assertThat(sFieldData.value(0), equalTo((short) 4));
    assertThat(sFieldData.docFieldData(0).getValue(), equalTo((short) 4));
    assertThat(sFieldData.values(0).length, equalTo(1));
    assertThat(sFieldData.docFieldData(0).getValues().length, equalTo(1));
    assertThat(sFieldData.values(0)[0], equalTo((short) 4));
    assertThat(sFieldData.docFieldData(0).getValues()[0], equalTo((short) 4));

    assertThat(sFieldData.hasValue(1), equalTo(true));
    assertThat(sFieldData.value(1), equalTo((short) 3));
    assertThat(sFieldData.values(1).length, equalTo(1));
    assertThat(sFieldData.values(1)[0], equalTo((short) 3));

    assertThat(sFieldData.hasValue(2), equalTo(true));
    assertThat(sFieldData.value(2), equalTo((short) 7));
    assertThat(sFieldData.values(2).length, equalTo(1));
    assertThat(sFieldData.values(2)[0], equalTo((short) 7));

    assertThat(sFieldData.hasValue(3), equalTo(false));

    assertThat(sFieldData.hasValue(4), equalTo(true));
    assertThat(sFieldData.value(4), equalTo((short) 4));
    assertThat(sFieldData.values(4).length, equalTo(1));
    assertThat(sFieldData.values(4)[0], equalTo((short) 4));

    // check order is correct
    final ArrayList<Short> values = new ArrayList<Short>();
    sFieldData.forEachValue(new ShortFieldData.ValueProc() {
        @Override
        public void onValue(short value) {
            values.add(value);
        }
    });
    assertThat(values.size(), equalTo(3));

    assertThat(values.get(0), equalTo((short) 3));
    assertThat(values.get(1), equalTo((short) 4));
    assertThat(values.get(2), equalTo((short) 7));

    // mvalue
    assertThat(mFieldData.hasValue(0), equalTo(true));
    assertThat(mFieldData.value(0), equalTo((short) 104));
    assertThat(mFieldData.values(0).length, equalTo(1));
    assertThat(mFieldData.values(0)[0], equalTo((short) 104));

    assertThat(mFieldData.hasValue(1), equalTo(true));
    assertThat(mFieldData.value(1), equalTo((short) 104));
    assertThat(mFieldData.docFieldData(1).getValue(), equalTo((short) 104));
    assertThat(mFieldData.values(1).length, equalTo(2));
    assertThat(mFieldData.docFieldData(1).getValues().length, equalTo(2));
    assertThat(mFieldData.values(1)[0], equalTo((short) 104));
    assertThat(mFieldData.docFieldData(1).getValues()[0], equalTo((short) 104));
    assertThat(mFieldData.docFieldData(1).getValues()[1], equalTo((short) 105));

    assertThat(mFieldData.hasValue(2), equalTo(false));

    assertThat(mFieldData.hasValue(3), equalTo(true));
    assertThat(mFieldData.value(3), equalTo((short) 102));
    assertThat(mFieldData.values(3).length, equalTo(1));
    assertThat(mFieldData.values(3)[0], equalTo((short) 102));

    assertThat(mFieldData.hasValue(4), equalTo(false));

    indexWriter.close();

    // check order is correct
    values.clear();
    mFieldData.forEachValue(new ShortFieldData.ValueProc() {
        @Override
        public void onValue(short value) {
            values.add(value);
        }
    });
    assertThat(values.size(), equalTo(3));

    assertThat(values.get(0), equalTo((short) 102));
    assertThat(values.get(1), equalTo((short) 104));
    assertThat(values.get(2), equalTo((short) 105));
}

From source file:org.elasticsearch.index.field.data.strings.StringFieldDataTests.java

License:Apache License

@Test
public void stringFieldDataTests() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true,
            IndexWriter.MaxFieldLength.UNLIMITED);

    indexWriter.addDocument(doc().add(field("svalue", "zzz")).add(field("mvalue", "111")).build());

    indexWriter.addDocument(doc().add(field("svalue", "xxx")).add(field("mvalue", "222 333")).build());

    indexWriter.addDocument(doc().add(field("mvalue", "333 444")).build());

    indexWriter.addDocument(doc().add(field("svalue", "aaa")).build());

    indexWriter.addDocument(doc().add(field("svalue", "aaa")).build());

    IndexReader reader = indexWriter.getReader();

    StringFieldData sFieldData = StringFieldData.load(reader, "svalue");
    StringFieldData mFieldData = StringFieldData.load(reader, "mvalue");

    assertThat(sFieldData.fieldName(), equalTo("svalue"));
    assertThat(sFieldData.multiValued(), equalTo(false));

    assertThat(mFieldData.fieldName(), equalTo("mvalue"));
    assertThat(mFieldData.multiValued(), equalTo(true));

    // svalue/*  w ww .  java 2  s  .  c  om*/
    assertThat(sFieldData.hasValue(0), equalTo(true));
    assertThat(sFieldData.value(0), equalTo("zzz"));
    assertThat(sFieldData.docFieldData(0).getValue(), equalTo("zzz"));
    assertThat(sFieldData.values(0).length, equalTo(1));
    assertThat(sFieldData.docFieldData(0).getValues().length, equalTo(1));
    assertThat(sFieldData.values(0)[0], equalTo("zzz"));
    assertThat(sFieldData.docFieldData(0).getValues()[0], equalTo("zzz"));

    assertThat(sFieldData.hasValue(1), equalTo(true));
    assertThat(sFieldData.value(1), equalTo("xxx"));
    assertThat(sFieldData.values(1).length, equalTo(1));
    assertThat(sFieldData.values(1)[0], equalTo("xxx"));

    assertThat(sFieldData.hasValue(2), equalTo(false));

    assertThat(sFieldData.hasValue(3), equalTo(true));
    assertThat(sFieldData.value(3), equalTo("aaa"));
    assertThat(sFieldData.values(3).length, equalTo(1));
    assertThat(sFieldData.values(3)[0], equalTo("aaa"));

    assertThat(sFieldData.hasValue(4), equalTo(true));
    assertThat(sFieldData.value(4), equalTo("aaa"));
    assertThat(sFieldData.values(4).length, equalTo(1));
    assertThat(sFieldData.values(4)[0], equalTo("aaa"));

    // check order is correct
    final ArrayList<String> values = new ArrayList<String>();
    sFieldData.forEachValue(new FieldData.StringValueProc() {
        @Override
        public void onValue(String value) {
            values.add(value);
        }
    });
    assertThat(values.size(), equalTo(3));

    assertThat(values.get(0), equalTo("aaa"));
    assertThat(values.get(1), equalTo("xxx"));
    assertThat(values.get(2), equalTo("zzz"));

    // mvalue
    assertThat(mFieldData.hasValue(0), equalTo(true));
    assertThat(mFieldData.value(0), equalTo("111"));
    assertThat(mFieldData.values(0).length, equalTo(1));
    assertThat(mFieldData.values(0)[0], equalTo("111"));

    assertThat(mFieldData.hasValue(1), equalTo(true));
    assertThat(mFieldData.value(1), equalTo("222"));
    assertThat(mFieldData.values(1).length, equalTo(2));
    assertThat(mFieldData.values(1)[0], equalTo("222"));
    assertThat(mFieldData.values(1)[1], equalTo("333"));

    assertThat(mFieldData.hasValue(2), equalTo(true));
    assertThat(mFieldData.value(2), equalTo("333"));
    assertThat(mFieldData.values(2).length, equalTo(2));
    assertThat(mFieldData.values(2)[0], equalTo("333"));
    assertThat(mFieldData.values(2)[1], equalTo("444"));

    assertThat(mFieldData.hasValue(3), equalTo(false));

    assertThat(mFieldData.hasValue(4), equalTo(false));

    values.clear();
    mFieldData.forEachValue(new FieldData.StringValueProc() {
        @Override
        public void onValue(String value) {
            values.add(value);
        }
    });
    assertThat(values.size(), equalTo(4));

    assertThat(values.get(0), equalTo("111"));
    assertThat(values.get(1), equalTo("222"));
    assertThat(values.get(2), equalTo("333"));
    assertThat(values.get(3), equalTo("444"));

    indexWriter.close();
}

From source file:org.elasticsearch.util.lucene.all.SimpleAllTests.java

License:Apache License

@Test
public void testSimpleAllNoBoost() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true,
            IndexWriter.MaxFieldLength.UNLIMITED);

    Document doc = new Document();
    doc.add(new Field("_id", "1", Field.Store.YES, Field.Index.NO));
    AllEntries allEntries = new AllEntries();
    allEntries.addText("field1", "something", 1.0f);
    allEntries.addText("field2", "else", 1.0f);
    allEntries.reset();//from w  ww.  j  av a2  s  .c o m
    doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER)));

    indexWriter.addDocument(doc);

    doc = new Document();
    doc.add(new Field("_id", "2", Field.Store.YES, Field.Index.NO));
    allEntries = new AllEntries();
    allEntries.addText("field1", "else", 1.0f);
    allEntries.addText("field2", "something", 1.0f);
    allEntries.reset();
    doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER)));

    indexWriter.addDocument(doc);

    IndexReader reader = indexWriter.getReader();
    IndexSearcher searcher = new IndexSearcher(reader);

    TopDocs docs = searcher.search(new AllTermQuery(new Term("_all", "else")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    docs = searcher.search(new AllTermQuery(new Term("_all", "something")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    searcher.close();

    indexWriter.close();
}

From source file:org.elasticsearch.util.lucene.all.SimpleAllTests.java

License:Apache License

@Test
public void testSimpleAllWithBoost() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true,
            IndexWriter.MaxFieldLength.UNLIMITED);

    Document doc = new Document();
    doc.add(new Field("_id", "1", Field.Store.YES, Field.Index.NO));
    AllEntries allEntries = new AllEntries();
    allEntries.addText("field1", "something", 1.0f);
    allEntries.addText("field2", "else", 1.0f);
    allEntries.reset();/*from  w ww .j  ava  2  s  .  com*/
    doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER)));

    indexWriter.addDocument(doc);

    doc = new Document();
    doc.add(new Field("_id", "2", Field.Store.YES, Field.Index.NO));
    allEntries = new AllEntries();
    allEntries.addText("field1", "else", 2.0f);
    allEntries.addText("field2", "something", 1.0f);
    allEntries.reset();
    doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER)));

    indexWriter.addDocument(doc);

    IndexReader reader = indexWriter.getReader();
    IndexSearcher searcher = new IndexSearcher(reader);

    // this one is boosted. so the second doc is more relevant
    TopDocs docs = searcher.search(new AllTermQuery(new Term("_all", "else")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(1));
    assertThat(docs.scoreDocs[1].doc, equalTo(0));

    docs = searcher.search(new AllTermQuery(new Term("_all", "something")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    searcher.close();

    indexWriter.close();
}

From source file:org.elasticsearch.util.lucene.all.SimpleAllTests.java

License:Apache License

@Test
public void testMultipleTokensAllNoBoost() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true,
            IndexWriter.MaxFieldLength.UNLIMITED);

    Document doc = new Document();
    doc.add(new Field("_id", "1", Field.Store.YES, Field.Index.NO));
    AllEntries allEntries = new AllEntries();
    allEntries.addText("field1", "something moo", 1.0f);
    allEntries.addText("field2", "else koo", 1.0f);
    allEntries.reset();/*from  ww  w . j  a  v a  2  s . c  o m*/
    doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER)));

    indexWriter.addDocument(doc);

    doc = new Document();
    doc.add(new Field("_id", "2", Field.Store.YES, Field.Index.NO));
    allEntries = new AllEntries();
    allEntries.addText("field1", "else koo", 1.0f);
    allEntries.addText("field2", "something moo", 1.0f);
    allEntries.reset();
    doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER)));

    indexWriter.addDocument(doc);

    IndexReader reader = indexWriter.getReader();
    IndexSearcher searcher = new IndexSearcher(reader);

    TopDocs docs = searcher.search(new AllTermQuery(new Term("_all", "else")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    docs = searcher.search(new AllTermQuery(new Term("_all", "koo")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    docs = searcher.search(new AllTermQuery(new Term("_all", "something")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    docs = searcher.search(new AllTermQuery(new Term("_all", "moo")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    searcher.close();

    indexWriter.close();
}

From source file:org.elasticsearch.util.lucene.all.SimpleAllTests.java

License:Apache License

@Test
public void testMultipleTokensAllWithBoost() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true,
            IndexWriter.MaxFieldLength.UNLIMITED);

    Document doc = new Document();
    doc.add(new Field("_id", "1", Field.Store.YES, Field.Index.NO));
    AllEntries allEntries = new AllEntries();
    allEntries.addText("field1", "something moo", 1.0f);
    allEntries.addText("field2", "else koo", 1.0f);
    allEntries.reset();/*from   ww w .jav a  2s. c  om*/
    doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER)));

    indexWriter.addDocument(doc);

    doc = new Document();
    doc.add(new Field("_id", "2", Field.Store.YES, Field.Index.NO));
    allEntries = new AllEntries();
    allEntries.addText("field1", "else koo", 2.0f);
    allEntries.addText("field2", "something moo", 1.0f);
    allEntries.reset();
    doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER)));

    indexWriter.addDocument(doc);

    IndexReader reader = indexWriter.getReader();
    IndexSearcher searcher = new IndexSearcher(reader);

    TopDocs docs = searcher.search(new AllTermQuery(new Term("_all", "else")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(1));
    assertThat(docs.scoreDocs[1].doc, equalTo(0));

    docs = searcher.search(new AllTermQuery(new Term("_all", "koo")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(1));
    assertThat(docs.scoreDocs[1].doc, equalTo(0));

    docs = searcher.search(new AllTermQuery(new Term("_all", "something")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    docs = searcher.search(new AllTermQuery(new Term("_all", "moo")), 10);
    assertThat(docs.totalHits, equalTo(2));
    assertThat(docs.scoreDocs[0].doc, equalTo(0));
    assertThat(docs.scoreDocs[1].doc, equalTo(1));

    searcher.close();

    indexWriter.close();
}

From source file:org.elasticsearch.util.lucene.search.MoreLikeThisQueryTests.java

License:Apache License

@Test
public void testSimple() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true,
            IndexWriter.MaxFieldLength.UNLIMITED);
    indexWriter.commit();//  ww w  . j a v a  2s.c  om
    assertThat("Index is empty after creation and commit", estimateRamSize(indexWriter), equalTo(0l));

    indexWriter.addDocument(doc().add(field("_id", "1")).add(field("text", "lucene")).build());
    indexWriter.addDocument(doc().add(field("_id", "2")).add(field("text", "lucene release")).build());

    IndexReader reader = indexWriter.getReader();
    IndexSearcher searcher = new IndexSearcher(reader);

    MoreLikeThisQuery mltQuery = new MoreLikeThisQuery("lucene", new String[] { "text" },
            Lucene.STANDARD_ANALYZER);
    mltQuery.setLikeText("lucene");
    mltQuery.setMinTermFrequency(1);
    mltQuery.setMinDocFreq(1);
    long count = Lucene.count(searcher, mltQuery, -1);
    assertThat(count, equalTo(2l));

    reader.close();
    indexWriter.close();
}

From source file:org.h2.fulltext.FullTextLucene2.java

License:Open Source License

/**
 * Get the index writer/searcher wrapper for the given connection.
 *
 * @param conn the connection/*from   w w w.  j a va  2 s .com*/
 * @return the index access wrapper
 */
protected static IndexAccess getIndexAccess(Connection conn) throws SQLException {
    String path = getIndexPath(conn);
    synchronized (INDEX_ACCESS) {
        IndexAccess access = INDEX_ACCESS.get(path);
        if (access == null) {
            try {
                /*## LUCENE2 ##
                boolean recreate = !IndexReader.indexExists(path);
                Analyzer analyzer = new StandardAnalyzer();
                access = new IndexAccess();
                access.modifier = new IndexModifier(path, analyzer, recreate);
                //*/
                //## LUCENE3 ##
                File f = new File(path);
                Directory indexDir = FSDirectory.open(f);
                boolean recreate = !IndexReader.indexExists(indexDir);
                Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
                IndexWriter writer = new IndexWriter(indexDir, analyzer, recreate,
                        IndexWriter.MaxFieldLength.UNLIMITED);
                //see http://wiki.apache.org/lucene-java/NearRealtimeSearch
                IndexReader reader = writer.getReader();
                access = new IndexAccess();
                access.writer = writer;
                access.reader = reader;
                access.searcher = new IndexSearcher(reader);
                //*/
            } catch (IOException e) {
                throw convertException(e);
            }
            INDEX_ACCESS.put(path, access);
        }
        return access;
    }
}

From source file:org.h2.fulltext.FullTextLuceneEx.java

License:Open Source License

/**
 * Get the index writer/searcher wrapper for the given connection.
 * /*  w ww.ja  v a  2s. com*/
 * @param conn the connection
 * @return the index access wrapper
 */
protected static IndexAccess getIndexAccess(Connection conn) throws SQLException {
    String path = getIndexPath(conn);
    synchronized (INDEX_ACCESS) {
        IndexAccess access = INDEX_ACCESS.get(path);
        if (access == null) {
            try {
                /*
                 * ## LUCENE2 ## boolean recreate =
                 * !IndexReader.indexExists(path); Analyzer analyzer = new
                 * StandardAnalyzer(); access = new IndexAccess();
                 * access.modifier = new IndexModifier(path, analyzer,
                 * recreate); //
                 */
                // ## LUCENE3 ##
                File f = new File(path);
                // Directory indexDir = FSDirectory.open(f);
                Directory indexDir = null;
                if (USE_RAM_DIRECTORY) {
                    if (f.exists())
                        indexDir = new RAMDirectory(FSDirectory.open(f));
                    else
                        indexDir = new RAMDirectory();
                } else {
                    indexDir = FSDirectory.open(f);
                }
                boolean recreate = !IndexReader.indexExists(indexDir);
                IndexWriter writer = new IndexWriter(indexDir, ANALYZER, recreate,
                        IndexWriter.MaxFieldLength.UNLIMITED);
                // see http://wiki.apache.org/lucene-java/NearRealtimeSearch
                IndexReader reader = writer.getReader();
                access = new IndexAccess();
                access.writer = writer;
                access.reader = reader;
                access.searcher = new IndexSearcher(reader);
                // */
            } catch (IOException e) {
                throw convertException(e);
            }
            INDEX_ACCESS.put(path, access);
        }
        return access;
    }
}

From source file:org.weborganic.flint.SearcherManager.java

License:artistic-license-2.0

/**
 * Create a new SearcherManager using the given writer.
 *
 * @param writer the IndexWriter used to load the real-time reader.
 * @throws IOException If thrown while trying to get the reader.
 *///from w  ww. j a  v  a2 s  . c  o  m
public SearcherManager(IndexWriter writer) throws IOException {
    IndexReader reader = writer.getReader();
    // Lucene 3.1+: IndexReader.open(writer, true);
    this.currentSearcher = new IndexSearcher(reader);
}