summaryrefslogtreecommitdiffstats
path: root/3rdparty/clucene/src/CLucene/index/FieldInfos.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/clucene/src/CLucene/index/FieldInfos.h')
-rw-r--r--3rdparty/clucene/src/CLucene/index/FieldInfos.h171
1 files changed, 171 insertions, 0 deletions
diff --git a/3rdparty/clucene/src/CLucene/index/FieldInfos.h b/3rdparty/clucene/src/CLucene/index/FieldInfos.h
new file mode 100644
index 000000000..7b6d0f56d
--- /dev/null
+++ b/3rdparty/clucene/src/CLucene/index/FieldInfos.h
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
+ *
+ * Distributable under the terms of either the Apache License (Version 2.0) or
+ * the GNU Lesser General Public License, as specified in the COPYING file.
+ *
+ * Changes are Copyright(C) 2007, 2008 by Nokia Corporation and/or its subsidiary(-ies), all rights reserved.
+*/
+#ifndef _lucene_index_FieldInfos_
+#define _lucene_index_FieldInfos_
+
+#if defined(_LUCENE_PRAGMA_ONCE)
+# pragma once
+#endif
+
+#include <QtCore/QString>
+
+#include "CLucene/store/Directory.h"
+#include "CLucene/document/Document.h"
+#include "CLucene/util/VoidMap.h"
+#include "CLucene/util/VoidList.h"
+
+CL_NS_DEF(index)
+
+class FieldInfo : LUCENE_BASE
+{
+ public:
+ //name of the field
+ const TCHAR* name;
+
+ //Is field indexed? true = yes false = no
+ bool isIndexed;
+
+ //field number
+ const int32_t number;
+
+ // true if term vector for this field should be stored
+ bool storeTermVector;
+ bool storeOffsetWithTermVector;
+ bool storePositionWithTermVector;
+
+ bool omitNorms; // omit norms associated with indexed fields
+
+ //Func - Constructor
+ // Initialises FieldInfo.
+ // na holds the name of the field
+ // tk indicates whether this field is indexed or not
+ // nu indicates its number
+ //Pre - na != NULL and holds the name of the field
+ // tk is true or false
+ // number >= 0
+ //Post - The FieldInfo instance has been created and initialized.
+ // name holds the duplicated string of na
+ // isIndexed = tk
+ // number = nu
+ FieldInfo(const TCHAR* fieldName, bool isIndexed, int32_t fieldNumber,
+ bool storeTermVector, bool storeOffsetWithTermVector,
+ bool storePositionWithTermVector, bool omitNorms);
+
+ //Func - Destructor
+ //Pre - true
+ //Post - The instance has been destroyed
+ ~FieldInfo();
+};
+
+/* Access to the Field Info file that describes document fields and whether or
+ * not they are indexed. Each segment has a separate Field Info file. Objects
+ * of this class are thread-safe for multiple readers, but only one thread can
+ * be adding documents at a time, with no other reader or writer threads
+ * accessing this object.
+*/
+class FieldInfos : LUCENE_BASE
+{
+private:
+ // we now use internd field names, so we can use the voidCompare to
+ // directly compare the strings
+ typedef CL_NS(util)::CLHashMap<const TCHAR*, FieldInfo*,
+ CL_NS(util)::Compare::TChar,CL_NS(util)::Equals::TChar > defByName;
+ defByName byName;
+
+ CL_NS(util)::CLArrayList<FieldInfo*,
+ CL_NS(util)::Deletor::Object<FieldInfo> > byNumber;
+
+public:
+ enum {
+ IS_INDEXED = 0x1,
+ STORE_TERMVECTOR = 0x2,
+ STORE_POSITIONS_WITH_TERMVECTOR = 0x4,
+ STORE_OFFSET_WITH_TERMVECTOR = 0x8,
+ OMIT_NORMS = 0x10
+ };
+
+ FieldInfos();
+ ~FieldInfos();
+
+ // Construct a FieldInfos object using the directory and the name of the
+ // file IndexInput
+ // @param d The directory to open the IndexInput from
+ // @param name Name of the file to open the IndexInput from in the Directory
+ // @throws IOException
+ // @see #read
+ FieldInfos(CL_NS(store)::Directory* d, const QString& name);
+
+ int32_t fieldNumber(const TCHAR* fieldName)const;
+
+ // Return the fieldinfo object referenced by the fieldNumber.
+ // @param fieldNumber
+ // @return the FieldInfo object or null when the given fieldNumber
+ // doesn't exist.
+ FieldInfo* fieldInfo(const TCHAR* fieldName) const;
+
+ // Return the fieldName identified by its number.
+ // @param fieldNumber
+ // @return the fieldName or an empty string when the field
+ // with the given number doesn't exist.
+ const TCHAR* fieldName(const int32_t fieldNumber) const;
+
+ FieldInfo* fieldInfo(const int32_t fieldNumber) const;
+
+ int32_t size()const;
+
+ bool hasVectors() const;
+
+ // Adds field info for a Document.
+ void add(const CL_NS(document)::Document* doc);
+
+ // Merges in information from another FieldInfos.
+ void add(FieldInfos* other);
+
+
+ /** If the field is not yet known, adds it. If it is known, checks to make
+ * sure that the isIndexed flag is the same as was given previously for this
+ * field. If not - marks it as being indexed. Same goes for the TermVector
+ * parameters.
+ *
+ * @param name The name of the field
+ * @param isIndexed true if the field is indexed
+ * @param storeTermVector true if the term vector should be stored
+ * @param storePositionWithTermVector true if the term vector with positions should be stored
+ * @param storeOffsetWithTermVector true if the term vector with offsets should be stored
+ */
+ void add(const TCHAR* name, bool isIndexed, bool storeTermVector = false,
+ bool storePositionWithTermVector = false,
+ bool storeOffsetWithTermVector = false, bool omitNorms = false);
+
+ /**
+ * Assumes the fields are not storing term vectors
+ * @param names The names of the fields
+ * @param isIndexed true if the field is indexed
+ * @param storeTermVector true if the term vector should be stored
+ *
+ * @see #add(String, boolean)
+ */
+ void add(const TCHAR** names, bool isIndexed, bool storeTermVector = false,
+ bool storePositionWithTermVector = false,
+ bool storeOffsetWithTermVector = false, bool omitNorms = false);
+
+ void write(CL_NS(store)::Directory* d, const QString& name) const;
+ void write(CL_NS(store)::IndexOutput* output) const;
+
+private:
+ void read(CL_NS(store)::IndexInput* input);
+ void addInternal(const TCHAR* name, bool isIndexed, bool storeTermVector,
+ bool storePositionWithTermVector, bool storeOffsetWithTermVector,
+ bool omitNorms);
+
+};
+
+CL_NS_END
+
+#endif