mhs-xapian 1.0.18a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/AUTHORS +1 -0
- data/COPYING +340 -0
- data/ChangeLog +5876 -0
- data/HACKING +101 -0
- data/INSTALL +293 -0
- data/Makefile +722 -0
- data/Makefile.am +26 -0
- data/Makefile.in +722 -0
- data/NEWS +2110 -0
- data/README +59 -0
- data/Rakefile +51 -0
- data/TODO +47 -0
- data/aclocal.m4 +7675 -0
- data/config.guess +1501 -0
- data/config.h +56 -0
- data/config.h.in +55 -0
- data/config.status +1298 -0
- data/config.sub +1705 -0
- data/configure +18536 -0
- data/configure.ac +944 -0
- data/csharp/.deps/xapian_wrap.Plo +1 -0
- data/csharp/AssemblyInfo.cs +40 -0
- data/csharp/AssemblyInfo.cs.in +40 -0
- data/csharp/Auto.cs +46 -0
- data/csharp/BM25Weight.cs +107 -0
- data/csharp/BoolWeight.cs +103 -0
- data/csharp/Database.cs +275 -0
- data/csharp/DateValueRangeProcessor.cs +61 -0
- data/csharp/Document.cs +177 -0
- data/csharp/ESet.cs +94 -0
- data/csharp/ESetIterator.cs +117 -0
- data/csharp/Enquire.cs +274 -0
- data/csharp/ExpandDecider.cs +76 -0
- data/csharp/Flint.cs +58 -0
- data/csharp/InMemory.cs +46 -0
- data/csharp/MSet.cs +193 -0
- data/csharp/MSetIterator.cs +141 -0
- data/csharp/Makefile +868 -0
- data/csharp/Makefile.am +106 -0
- data/csharp/Makefile.in +868 -0
- data/csharp/MatchDecider.cs +76 -0
- data/csharp/MultiValueSorter.cs +63 -0
- data/csharp/NumberValueRangeProcessor.cs +61 -0
- data/csharp/PositionIterator.cs +101 -0
- data/csharp/PostingIterator.cs +125 -0
- data/csharp/Quartz.cs +58 -0
- data/csharp/Query.cs +150 -0
- data/csharp/QueryParser.cs +174 -0
- data/csharp/RSet.cs +102 -0
- data/csharp/Remote.cs +100 -0
- data/csharp/SWIGTYPE_p_std__string.cs +30 -0
- data/csharp/SWIGTYPE_p_std__vectorTXapian__Query_t.cs +30 -0
- data/csharp/SWIGTYPE_p_std__vectorTstd__string_t.cs +30 -0
- data/csharp/SimpleStopper.cs +64 -0
- data/csharp/SmokeTest.cs +178 -0
- data/csharp/Sorter.cs +76 -0
- data/csharp/Stem.cs +66 -0
- data/csharp/Stopper.cs +91 -0
- data/csharp/StringValueRangeProcessor.cs +53 -0
- data/csharp/TermGenerator.cs +152 -0
- data/csharp/TermIterator.cs +125 -0
- data/csharp/TradWeight.cs +107 -0
- data/csharp/ValueIterator.cs +102 -0
- data/csharp/ValueRangeProcessor.cs +76 -0
- data/csharp/Version.cs +60 -0
- data/csharp/Weight.cs +93 -0
- data/csharp/WritableDatabase.cs +153 -0
- data/csharp/Xapian.cs +65 -0
- data/csharp/XapianPINVOKE.cs +1527 -0
- data/csharp/docs/Makefile +450 -0
- data/csharp/docs/Makefile.am +16 -0
- data/csharp/docs/Makefile.in +450 -0
- data/csharp/docs/examples/SimpleExpand.cs +109 -0
- data/csharp/docs/examples/SimpleIndex.cs +71 -0
- data/csharp/docs/examples/SimpleSearch.cs +78 -0
- data/csharp/docs/index.html +211 -0
- data/csharp/util.i +233 -0
- data/csharp/xapian_wrap.cc +10338 -0
- data/csharp/xapian_wrap.h +93 -0
- data/depcomp +632 -0
- data/extconf.rb +20 -0
- data/generic/except.i +80 -0
- data/generic/generic.mk +48 -0
- data/install-sh +520 -0
- data/java-swig/.deps/xapian_wrap.Plo +1 -0
- data/java-swig/Auto.java +35 -0
- data/java-swig/BM25Weight.java +81 -0
- data/java-swig/BoolWeight.java +77 -0
- data/java-swig/Database.java +195 -0
- data/java-swig/DateValueRangeProcessor.java +51 -0
- data/java-swig/Document.java +135 -0
- data/java-swig/ESet.java +71 -0
- data/java-swig/ESetIterator.java +71 -0
- data/java-swig/Enquire.java +246 -0
- data/java-swig/ExpandDecider.java +59 -0
- data/java-swig/Flint.java +43 -0
- data/java-swig/InMemory.java +35 -0
- data/java-swig/MSet.java +143 -0
- data/java-swig/MSetIterator.java +87 -0
- data/java-swig/Makefile +781 -0
- data/java-swig/Makefile.am +132 -0
- data/java-swig/Makefile.in +781 -0
- data/java-swig/MatchDecider.java +59 -0
- data/java-swig/MultiValueSorter.java +51 -0
- data/java-swig/NumberValueRangeProcessor.java +51 -0
- data/java-swig/PositionIterator.java +63 -0
- data/java-swig/PostingIterator.java +83 -0
- data/java-swig/Quartz.java +43 -0
- data/java-swig/Query.java +189 -0
- data/java-swig/QueryParser.java +214 -0
- data/java-swig/RSet.java +79 -0
- data/java-swig/Remote.java +71 -0
- data/java-swig/SWIGTYPE_p_std__string.java +25 -0
- data/java-swig/SimpleStopper.java +51 -0
- data/java-swig/SmokeTest.java +161 -0
- data/java-swig/Sorter.java +59 -0
- data/java-swig/Stem.java +51 -0
- data/java-swig/Stopper.java +63 -0
- data/java-swig/StringValueRangeProcessor.java +43 -0
- data/java-swig/TermGenerator.java +158 -0
- data/java-swig/TermIterator.java +83 -0
- data/java-swig/TradWeight.java +81 -0
- data/java-swig/ValueIterator.java +67 -0
- data/java-swig/ValueRangeProcessor.java +59 -0
- data/java-swig/Version.java +47 -0
- data/java-swig/Weight.java +68 -0
- data/java-swig/WritableDatabase.java +123 -0
- data/java-swig/Xapian.java +39 -0
- data/java-swig/XapianConstants.java +15 -0
- data/java-swig/XapianJNI.java +508 -0
- data/java-swig/run-java-test +6 -0
- data/java-swig/xapian_wrap.cc +12594 -0
- data/java-swig/xapian_wrap.h +91 -0
- data/java/Makefile +660 -0
- data/java/Makefile.am +35 -0
- data/java/Makefile.in +660 -0
- data/java/README +76 -0
- data/java/SmokeTest.java +148 -0
- data/java/native/.deps/Database.Plo +1 -0
- data/java/native/.deps/Document.Plo +1 -0
- data/java/native/.deps/ESet.Plo +1 -0
- data/java/native/.deps/ESetIterator.Plo +1 -0
- data/java/native/.deps/Enquire.Plo +1 -0
- data/java/native/.deps/MSet.Plo +1 -0
- data/java/native/.deps/MSetIterator.Plo +1 -0
- data/java/native/.deps/PositionIterator.Plo +1 -0
- data/java/native/.deps/Query.Plo +1 -0
- data/java/native/.deps/RSet.Plo +1 -0
- data/java/native/.deps/Stem.Plo +1 -0
- data/java/native/.deps/TermIterator.Plo +1 -0
- data/java/native/.deps/WritableDatabase.Plo +1 -0
- data/java/native/.deps/org_xapian_XapianJNI.Plo +1 -0
- data/java/native/.deps/utils.Plo +1 -0
- data/java/native/Database.cc +222 -0
- data/java/native/Document.cc +173 -0
- data/java/native/ESet.cc +79 -0
- data/java/native/ESetIterator.cc +82 -0
- data/java/native/Enquire.cc +271 -0
- data/java/native/MSet.cc +169 -0
- data/java/native/MSetIterator.cc +107 -0
- data/java/native/Makefile +594 -0
- data/java/native/Makefile.am +51 -0
- data/java/native/Makefile.in +594 -0
- data/java/native/PositionIterator.cc +64 -0
- data/java/native/Query.cc +180 -0
- data/java/native/RSet.cc +98 -0
- data/java/native/Stem.cc +75 -0
- data/java/native/TermIterator.cc +107 -0
- data/java/native/WritableDatabase.cc +118 -0
- data/java/native/XapianObjectHolder.h +115 -0
- data/java/native/org_xapian_XapianJNI.cc +78 -0
- data/java/native/org_xapian_XapianJNI.h +1369 -0
- data/java/native/utils.cc +51 -0
- data/java/native/xapian_jni.h +116 -0
- data/java/org/xapian/Database.java +148 -0
- data/java/org/xapian/Document.java +135 -0
- data/java/org/xapian/ESet.java +66 -0
- data/java/org/xapian/ESetIterator.java +97 -0
- data/java/org/xapian/Enquire.java +136 -0
- data/java/org/xapian/ExpandDecider.java +30 -0
- data/java/org/xapian/MSet.java +104 -0
- data/java/org/xapian/MSetIterator.java +132 -0
- data/java/org/xapian/Makefile +580 -0
- data/java/org/xapian/Makefile.am +38 -0
- data/java/org/xapian/Makefile.in +580 -0
- data/java/org/xapian/MatchDecider.java +30 -0
- data/java/org/xapian/PositionIterator.java +89 -0
- data/java/org/xapian/Query.java +190 -0
- data/java/org/xapian/RSet.java +89 -0
- data/java/org/xapian/Stem.java +80 -0
- data/java/org/xapian/TermIterator.java +142 -0
- data/java/org/xapian/WritableDatabase.java +92 -0
- data/java/org/xapian/Xapian.java +114 -0
- data/java/org/xapian/XapianJNI.java +444 -0
- data/java/org/xapian/errors/AssertionError.java +40 -0
- data/java/org/xapian/errors/DatabaseCorruptError.java +40 -0
- data/java/org/xapian/errors/DatabaseError.java +40 -0
- data/java/org/xapian/errors/DatabaseLockError.java +40 -0
- data/java/org/xapian/errors/DatabaseModifiedError.java +40 -0
- data/java/org/xapian/errors/DatabaseOpeningError.java +40 -0
- data/java/org/xapian/errors/DocNotFoundError.java +40 -0
- data/java/org/xapian/errors/FeatureUnavailableError.java +40 -0
- data/java/org/xapian/errors/InternalError.java +40 -0
- data/java/org/xapian/errors/InvalidArgumentError.java +40 -0
- data/java/org/xapian/errors/InvalidOperationError.java +40 -0
- data/java/org/xapian/errors/LogicError.java +40 -0
- data/java/org/xapian/errors/Makefile +416 -0
- data/java/org/xapian/errors/Makefile.am +32 -0
- data/java/org/xapian/errors/Makefile.in +416 -0
- data/java/org/xapian/errors/NetworkError.java +40 -0
- data/java/org/xapian/errors/NetworkTimeoutError.java +40 -0
- data/java/org/xapian/errors/RangeError.java +40 -0
- data/java/org/xapian/errors/RuntimeError.java +40 -0
- data/java/org/xapian/errors/UnimplementedError.java +40 -0
- data/java/org/xapian/errors/XapianError.java +40 -0
- data/java/org/xapian/errors/XapianRuntimeError.java +49 -0
- data/java/org/xapian/examples/Makefile +391 -0
- data/java/org/xapian/examples/Makefile.am +8 -0
- data/java/org/xapian/examples/Makefile.in +391 -0
- data/java/org/xapian/examples/SimpleIndex.java +68 -0
- data/java/org/xapian/examples/SimpleSearch.java +71 -0
- data/java/run-java-test +6 -0
- data/libtool +7618 -0
- data/ltmain.sh +6956 -0
- data/mhs-xapian.gemspec +368 -0
- data/missing +378 -0
- data/php/.deps/xapian_wrap.Plo +1 -0
- data/php/Makefile +871 -0
- data/php/Makefile.am +82 -0
- data/php/Makefile.in +871 -0
- data/php/docs/Makefile +453 -0
- data/php/docs/Makefile.am +19 -0
- data/php/docs/Makefile.in +453 -0
- data/php/docs/examples/simpleexpand.php4 +108 -0
- data/php/docs/examples/simpleexpand.php5 +104 -0
- data/php/docs/examples/simpleindex.php4 +76 -0
- data/php/docs/examples/simpleindex.php5 +73 -0
- data/php/docs/examples/simplesearch.php4 +75 -0
- data/php/docs/examples/simplesearch.php5 +72 -0
- data/php/docs/index.html +313 -0
- data/php/except.i +98 -0
- data/php/php4/php_xapian.h +323 -0
- data/php/php4/xapian.php +32 -0
- data/php/php4/xapian_wrap.cc +27656 -0
- data/php/php5/php_xapian.h +319 -0
- data/php/php5/xapian.php +1566 -0
- data/php/php5/xapian_wrap.cc +24330 -0
- data/php/smoketest.php +246 -0
- data/php/smoketest4.php +84 -0
- data/php/smoketest5.php +79 -0
- data/php/util.i +187 -0
- data/python/.deps/xapian_wrap.Plo +1 -0
- data/python/Makefile +891 -0
- data/python/Makefile.am +105 -0
- data/python/Makefile.in +891 -0
- data/python/doccomments.i +5134 -0
- data/python/docs/Makefile +448 -0
- data/python/docs/Makefile.am +14 -0
- data/python/docs/Makefile.in +448 -0
- data/python/docs/examples/simpleexpand.py +98 -0
- data/python/docs/examples/simpleindex.py +65 -0
- data/python/docs/examples/simplematchdecider.py +78 -0
- data/python/docs/examples/simplesearch.py +65 -0
- data/python/docs/index.html +420 -0
- data/python/except.i +290 -0
- data/python/extra.i +1048 -0
- data/python/extracomments.i +28 -0
- data/python/generate-python-exceptions +189 -0
- data/python/generate-python-exceptions.in +189 -0
- data/python/modern/xapian.py +5662 -0
- data/python/modern/xapian_wrap.cc +35170 -0
- data/python/modern/xapian_wrap.h +244 -0
- data/python/pythontest.py +1110 -0
- data/python/smoketest.py +328 -0
- data/python/testsuite.py +382 -0
- data/python/util.i +517 -0
- data/ruby/.deps/xapian_wrap.Plo +494 -0
- data/ruby/.libs/_xapian.bundle +0 -0
- data/ruby/.libs/_xapian.bundle.dSYM/Contents/Info.plist +25 -0
- data/ruby/.libs/_xapian.bundle.dSYM/Contents/Resources/DWARF/_xapian.bundle +0 -0
- data/ruby/.libs/_xapian.la +35 -0
- data/ruby/.libs/_xapian.lai +35 -0
- data/ruby/Makefile +854 -0
- data/ruby/Makefile.am +62 -0
- data/ruby/Makefile.in +854 -0
- data/ruby/_xapian.la +35 -0
- data/ruby/docs/Makefile +487 -0
- data/ruby/docs/Makefile.am +50 -0
- data/ruby/docs/Makefile.in +487 -0
- data/ruby/docs/examples/simpleexpand.rb +98 -0
- data/ruby/docs/examples/simpleindex.rb +60 -0
- data/ruby/docs/examples/simplematchdecider.rb +74 -0
- data/ruby/docs/examples/simplesearch.rb +63 -0
- data/ruby/docs/index.html +197 -0
- data/ruby/smoketest.rb +211 -0
- data/ruby/util.i +232 -0
- data/ruby/xapian.rb +280 -0
- data/ruby/xapian_wrap.cc +25837 -0
- data/ruby/xapian_wrap.h +65 -0
- data/ruby/xapian_wrap.lo +12 -0
- data/skiptest +2 -0
- data/stamp-h1 +1 -0
- data/tcl8/.deps/xapian_wrap.Plo +1 -0
- data/tcl8/Makefile +835 -0
- data/tcl8/Makefile.am +49 -0
- data/tcl8/Makefile.in +835 -0
- data/tcl8/docs/Makefile +448 -0
- data/tcl8/docs/Makefile.am +14 -0
- data/tcl8/docs/Makefile.in +448 -0
- data/tcl8/docs/examples/simpleexpand.tcl +104 -0
- data/tcl8/docs/examples/simpleindex.tcl +68 -0
- data/tcl8/docs/examples/simplesearch.tcl +66 -0
- data/tcl8/docs/index.html +208 -0
- data/tcl8/except.i +48 -0
- data/tcl8/pkgIndex.tcl +1 -0
- data/tcl8/pkgIndex.tcl.in +1 -0
- data/tcl8/run-tcl-test +15 -0
- data/tcl8/runtest.tcl +29 -0
- data/tcl8/smoketest.tcl +155 -0
- data/tcl8/util.i +76 -0
- data/tcl8/xapian_wrap.cc +20900 -0
- data/xapian-bindings.spec +206 -0
- data/xapian-bindings.spec.in +206 -0
- data/xapian-version.h +1 -0
- data/xapian-version.h.in +1 -0
- data/xapian.i +939 -0
- metadata +395 -0
data/java/README
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
How to build the bindings:
|
2
|
+
==========================
|
3
|
+
|
4
|
+
Running "make" and then "make install" will "install" a JNI glue shared library
|
5
|
+
into a "built" subdirectory of the java build directory. The jar file is built
|
6
|
+
into the "built" subdirectory too.
|
7
|
+
|
8
|
+
You can copy these two files into your java installation, or just use them
|
9
|
+
in-place.
|
10
|
+
|
11
|
+
How to compile the examples:
|
12
|
+
============================
|
13
|
+
|
14
|
+
cd java
|
15
|
+
javac -classpath built/xapian_jni.jar:. org/xapian/examples/SimpleIndex.java
|
16
|
+
javac -classpath built/xapian_jni.jar:. org/xapian/examples/SimpleSearch.java
|
17
|
+
|
18
|
+
How to run the examples:
|
19
|
+
========================
|
20
|
+
|
21
|
+
To run the examples, you need to give Java a special system-property named
|
22
|
+
"java.library.path". The value of this property is the path of the directory
|
23
|
+
where the libxapian_jni.so (or whatever extension is used on your platform)
|
24
|
+
JNI library is located.
|
25
|
+
|
26
|
+
java -Djava.library.path=built -classpath built/xapian_jni.jar:. \
|
27
|
+
org.xapian.examples.SimpleIndex ./test.db index words like java
|
28
|
+
|
29
|
+
java -Djava.library.path=built -classpath built/xapian_jni.jar:. \
|
30
|
+
org.xapian.examples.SimpleSearch ./test.db index words like java
|
31
|
+
|
32
|
+
Alternatively, you can avoid needing the -Djava.library.path setting by
|
33
|
+
setting the LD_LIBRARY_PATH environment variable, or by installing the JNI
|
34
|
+
library in the appropriate directory so your JVM finds it automatically
|
35
|
+
(for example, on Mac OS X you can copy it into /Library/Java/Extensions/).
|
36
|
+
|
37
|
+
The java bindings have been tested with Debian packages of GCJ 3.4 and GIJ 3.4,
|
38
|
+
with Sun java versions 1.4.1_01a and 1.5.0_06-b05, and with Eclipse Java
|
39
|
+
Compiler 0.536 and GIJ 4.0.1.
|
40
|
+
|
41
|
+
They should work with any java toolchain with suitable JNI support - please
|
42
|
+
report success stories or any problems to the development mailing list:
|
43
|
+
xapian-devel@lists.xapian.org
|
44
|
+
|
45
|
+
Naming of wrapped methods:
|
46
|
+
==========================
|
47
|
+
|
48
|
+
Methods are renamed to match Java's naming conventions. So get_mset becomes
|
49
|
+
getMSet, etc. Also get_description is wrapped as toString.
|
50
|
+
|
51
|
+
TODO list:
|
52
|
+
==========
|
53
|
+
|
54
|
+
* OSF/1 on alpha needs "-pthread". Other platforms may need something too...
|
55
|
+
|
56
|
+
* Fix string passing to be zero-byte clean.
|
57
|
+
|
58
|
+
The majority of the C++ API is wrapped, with a few exceptions still to be done:
|
59
|
+
|
60
|
+
* Wrap optional parameter "parameter" for Query ctor.
|
61
|
+
|
62
|
+
* Wrap new QueryParser API.
|
63
|
+
|
64
|
+
* Wrap changes to Enquire sorting API.
|
65
|
+
|
66
|
+
* Use Stem::operator() rather than Stem::stem_word().
|
67
|
+
|
68
|
+
* Wrap new method ESet::back().
|
69
|
+
|
70
|
+
* Wrap the new optional third parameter to Enquire::set_sorting().
|
71
|
+
|
72
|
+
* Third (optional) argument to Document::add_posting() isn't wrapped.
|
73
|
+
|
74
|
+
* Wrap Xapian::Weight and standard subclasses.
|
75
|
+
|
76
|
+
* Allow user derived weight classes to be implemented in Java (less important).
|
data/java/SmokeTest.java
ADDED
@@ -0,0 +1,148 @@
|
|
1
|
+
// Simple test that we can use xapian from java
|
2
|
+
//
|
3
|
+
// Copyright (C) 2005,2006 Olly Betts
|
4
|
+
//
|
5
|
+
// This program is free software; you can redistribute it and/or
|
6
|
+
// modify it under the terms of the GNU General Public License as
|
7
|
+
// published by the Free Software Foundation; either version 2 of the
|
8
|
+
// License, or (at your option) any later version.
|
9
|
+
//
|
10
|
+
// This program is distributed in the hope that it will be useful,
|
11
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
// GNU General Public License for more details.
|
14
|
+
//
|
15
|
+
// You should have received a copy of the GNU General Public License
|
16
|
+
// along with this program; if not, write to the Free Software
|
17
|
+
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
18
|
+
// USA
|
19
|
+
|
20
|
+
import org.xapian.*;
|
21
|
+
import org.xapian.errors.*;
|
22
|
+
|
23
|
+
class MyMatchDecider implements MatchDecider {
|
24
|
+
public boolean accept(Document d) {
|
25
|
+
// NB It's not normally appropriate to call getData() in a MatchDecider
|
26
|
+
// but we do it here to make sure we don't get an empty document.
|
27
|
+
try {
|
28
|
+
return d.getData() == "";
|
29
|
+
} catch (XapianError e) {
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
class MyExpandDecider implements ExpandDecider {
|
36
|
+
public boolean accept(String s) { return s.substring(0, 1) != "a"; }
|
37
|
+
}
|
38
|
+
|
39
|
+
public class SmokeTest {
|
40
|
+
public static void main(String[] args) throws Exception {
|
41
|
+
try {
|
42
|
+
Stem stem = new Stem("english");
|
43
|
+
if (!stem.toString().equals("Xapian::Stem(english)")) {
|
44
|
+
System.err.println("Unexpected stem.toString()");
|
45
|
+
System.exit(1);
|
46
|
+
}
|
47
|
+
Document doc = new Document();
|
48
|
+
doc.setData("is there anybody out there?");
|
49
|
+
doc.addTerm("XYzzy");
|
50
|
+
doc.addPosting(stem.stemWord("is"), 1);
|
51
|
+
doc.addPosting(stem.stemWord("there"), 2);
|
52
|
+
doc.addPosting(stem.stemWord("anybody"), 3);
|
53
|
+
doc.addPosting(stem.stemWord("out"), 4);
|
54
|
+
doc.addPosting(stem.stemWord("there"), 5);
|
55
|
+
WritableDatabase db = Xapian.InMemory.open();
|
56
|
+
db.addDocument(doc);
|
57
|
+
if (db.getDocCount() != 1) {
|
58
|
+
System.err.println("Unexpected db.getDocCount()");
|
59
|
+
System.exit(1);
|
60
|
+
}
|
61
|
+
|
62
|
+
String[] terms = { "smoke", "test", "terms" };
|
63
|
+
Query query = new Query(Query.OP_OR, terms);
|
64
|
+
if (!query.toString().equals("Xapian::Query((smoke OR test OR terms))")) {
|
65
|
+
System.err.println("Unexpected query.toString()");
|
66
|
+
System.exit(1);
|
67
|
+
}
|
68
|
+
Query[] queries = { new Query("smoke"), query, new Query("string") };
|
69
|
+
Query query2 = new Query(Query.OP_XOR, queries);
|
70
|
+
if (!query2.toString().equals("Xapian::Query((smoke XOR (smoke OR test OR terms) XOR string))")) {
|
71
|
+
System.err.println("Unexpected query2.toString()");
|
72
|
+
System.exit(1);
|
73
|
+
}
|
74
|
+
String[] subqs = { "a", "b" };
|
75
|
+
Query query3 = new Query(Query.OP_OR, subqs);
|
76
|
+
if (!query3.toString().equals("Xapian::Query((a OR b))")) {
|
77
|
+
System.err.println("Unexpected query3.toString()");
|
78
|
+
System.exit(1);
|
79
|
+
}
|
80
|
+
Enquire enq = new Enquire(db);
|
81
|
+
enq.setQuery(new Query(Query.OP_OR, "there", "is"));
|
82
|
+
MSet mset = enq.getMSet(0, 10);
|
83
|
+
if (mset.size() != 1) {
|
84
|
+
System.err.println("Unexpected mset.size()");
|
85
|
+
System.exit(1);
|
86
|
+
}
|
87
|
+
String term_str = "";
|
88
|
+
TermIterator itor = enq.getMatchingTerms(mset.getElement(0));
|
89
|
+
while (itor.hasNext()) {
|
90
|
+
term_str += itor.next();
|
91
|
+
if (itor.hasNext()) term_str += ' ';
|
92
|
+
}
|
93
|
+
if (!term_str.equals("is there")) {
|
94
|
+
System.err.println("Unexpected term_str");
|
95
|
+
System.exit(1);
|
96
|
+
}
|
97
|
+
boolean ok = false;
|
98
|
+
try {
|
99
|
+
Database db_fail = new Database("NOsuChdaTabASe");
|
100
|
+
// Ignore the return value.
|
101
|
+
db_fail.getDocCount();
|
102
|
+
} catch (DatabaseOpeningError e) {
|
103
|
+
ok = true;
|
104
|
+
}
|
105
|
+
if (!ok) {
|
106
|
+
System.err.println("Managed to open non-existent database");
|
107
|
+
System.exit(1);
|
108
|
+
}
|
109
|
+
|
110
|
+
if (Query.OP_ELITE_SET != 10) {
|
111
|
+
System.err.println("OP_ELITE_SET is " + Query.OP_ELITE_SET + " not 10");
|
112
|
+
System.exit(1);
|
113
|
+
}
|
114
|
+
|
115
|
+
RSet rset = new RSet();
|
116
|
+
rset.addDocument(1);
|
117
|
+
ESet eset = enq.getESet(10, rset, new MyExpandDecider());
|
118
|
+
ESetIterator eit = eset.iterator();
|
119
|
+
int count = 0;
|
120
|
+
while (eit.hasNext()) {
|
121
|
+
if (eit.getTerm().substring(0, 1) == "a") {
|
122
|
+
System.err.println("MyExpandDecider wasn't used");
|
123
|
+
System.exit(1);
|
124
|
+
}
|
125
|
+
++count;
|
126
|
+
eit.next();
|
127
|
+
}
|
128
|
+
if (count != eset.size()) {
|
129
|
+
System.err.println("ESet.size() mismatched number of terms returned by ESetIterator");
|
130
|
+
System.exit(1);
|
131
|
+
}
|
132
|
+
|
133
|
+
MSet mset2 = enq.getMSet(0, 10, null, new MyMatchDecider());
|
134
|
+
if (mset2.size() > 0) {
|
135
|
+
System.err.println("MyMatchDecider wasn't used");
|
136
|
+
System.exit(1);
|
137
|
+
}
|
138
|
+
|
139
|
+
if (!enq.getQuery().toString().equals("Xapian::Query((there OR is))")) {
|
140
|
+
System.err.println("Enquire::getQuery() returned the wrong query: " + enq.getQuery().toString());
|
141
|
+
System.exit(1);
|
142
|
+
}
|
143
|
+
} catch (Exception e) {
|
144
|
+
System.err.println("Caught unexpected exception " + e.toString());
|
145
|
+
System.exit(1);
|
146
|
+
}
|
147
|
+
}
|
148
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1 @@
|
|
1
|
+
# dummy
|
@@ -0,0 +1,222 @@
|
|
1
|
+
/**
|
2
|
+
Copyright (c) 2003, Technology Concepts & Design, Inc.
|
3
|
+
Copyright (c) 2008, Olly Betts
|
4
|
+
All rights reserved.
|
5
|
+
|
6
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted
|
7
|
+
provided that the following conditions are met:
|
8
|
+
|
9
|
+
- Redistributions of source code must retain the above copyright notice, this list of conditions
|
10
|
+
and the following disclaimer.
|
11
|
+
|
12
|
+
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions
|
13
|
+
and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
14
|
+
|
15
|
+
- Neither the name of Technology Concepts & Design, Inc. nor the names of its contributors may be used to
|
16
|
+
endorse or promote products derived from this software without specific prior written permission.
|
17
|
+
|
18
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
19
|
+
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
20
|
+
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
|
21
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
22
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
23
|
+
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
24
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
25
|
+
THE POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
**/
|
27
|
+
|
28
|
+
#include "xapian_jni.h"
|
29
|
+
|
30
|
+
using namespace std;
|
31
|
+
using namespace Xapian;
|
32
|
+
|
33
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1new__ (JNIEnv *env, jclass clazz) {
|
34
|
+
TRY
|
35
|
+
Database *db = new Database();
|
36
|
+
return _database->put(db);
|
37
|
+
CATCH(-1)
|
38
|
+
}
|
39
|
+
|
40
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1new__Ljava_lang_String_2 (JNIEnv *env, jclass clazz, jstring path) {
|
41
|
+
TRY
|
42
|
+
const char *c_path = env->GetStringUTFChars(path, 0);
|
43
|
+
string cpp_path(c_path, env->GetStringUTFLength(path));
|
44
|
+
Database *db = new Database(cpp_path);
|
45
|
+
env->ReleaseStringUTFChars(path, c_path);
|
46
|
+
return _database->put(db);
|
47
|
+
CATCH(-1)
|
48
|
+
}
|
49
|
+
|
50
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1new__J (JNIEnv *env, jclass clazz, jlong dbid) {
|
51
|
+
TRY
|
52
|
+
Database *db = (Database *) _database->get(dbid);
|
53
|
+
Database *new_db = new Database(*db);
|
54
|
+
return _database->put(new_db);
|
55
|
+
CATCH(-1)
|
56
|
+
}
|
57
|
+
|
58
|
+
JNIEXPORT void JNICALL Java_org_xapian_XapianJNI_database_1add_1database (JNIEnv *env, jclass clazz, jlong dbid, jlong dbid_other) {
|
59
|
+
TRY
|
60
|
+
Database *db = (Database *) _database->get(dbid);
|
61
|
+
Database *other_db = (Database *) _database->get(dbid_other);
|
62
|
+
db->add_database(*other_db);
|
63
|
+
CATCH(;)
|
64
|
+
}
|
65
|
+
|
66
|
+
JNIEXPORT void JNICALL Java_org_xapian_XapianJNI_database_1reopen (JNIEnv *env, jclass clazz, jlong dbid) {
|
67
|
+
TRY
|
68
|
+
Database *db = (Database *) _database->get(dbid);
|
69
|
+
db->reopen();
|
70
|
+
CATCH(;)
|
71
|
+
}
|
72
|
+
|
73
|
+
JNIEXPORT jstring JNICALL Java_org_xapian_XapianJNI_database_1get_1description (JNIEnv *env, jclass clazz, jlong dbid) {
|
74
|
+
TRY
|
75
|
+
Database *db = (Database *) _database->get(dbid);
|
76
|
+
return env->NewStringUTF(db->get_description().c_str());
|
77
|
+
CATCH(NULL)
|
78
|
+
}
|
79
|
+
|
80
|
+
//
|
81
|
+
// TODO: These have not been implemented yet!
|
82
|
+
//
|
83
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1postlist_1begin (JNIEnv *env, jclass clazz, jlong dbid, jstring) {
|
84
|
+
TRY
|
85
|
+
throw "Database::postlist_begin() not (yet) supported by XapianJNI";
|
86
|
+
CATCH(-1)
|
87
|
+
}
|
88
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1postlist_1end (JNIEnv *env, jclass clazz, jlong dbid, jstring) {
|
89
|
+
TRY
|
90
|
+
throw "Database::postlist_end() not (yet) supported by XapianJNI";
|
91
|
+
CATCH(-1)
|
92
|
+
}
|
93
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1termlist_1begin (JNIEnv *env, jclass clazz, jlong dbid, jlong) {
|
94
|
+
TRY
|
95
|
+
throw "Database::termlist_begin() not (yet) supported by XapianJNI";
|
96
|
+
CATCH(-1)
|
97
|
+
}
|
98
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1termlist_1end (JNIEnv *env, jclass clazz, jlong dbid, jlong) {
|
99
|
+
TRY
|
100
|
+
throw "Database::termlist_end() not (yet) supported by XapianJNI";
|
101
|
+
CATCH(-1)
|
102
|
+
}
|
103
|
+
|
104
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1positionlist_1begin (JNIEnv *env, jclass clazz, jlong dbid, jlong dbdocid, jstring term) {
|
105
|
+
TRY
|
106
|
+
Database *db = (Database *) _database->get(dbid);
|
107
|
+
const char *c_term = env->GetStringUTFChars(term, 0);
|
108
|
+
string cpp_term(c_term, env->GetStringUTFLength(term));
|
109
|
+
PositionIterator *itr;
|
110
|
+
itr = new PositionIterator(db->positionlist_begin(dbdocid, cpp_term));
|
111
|
+
env->ReleaseStringUTFChars(term, c_term);
|
112
|
+
return _positioniterator->put(itr);
|
113
|
+
CATCH(-1)
|
114
|
+
}
|
115
|
+
|
116
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1positionlist_1end (JNIEnv *env, jclass clazz, jlong dbid, jlong dbdocid, jstring term) {
|
117
|
+
TRY
|
118
|
+
Database *db = (Database *) _database->get(dbid);
|
119
|
+
const char *c_term = env->GetStringUTFChars(term, 0);
|
120
|
+
string cpp_term(c_term, env->GetStringUTFLength(term));
|
121
|
+
PositionIterator *itr = new PositionIterator (db->positionlist_end(dbdocid, cpp_term));
|
122
|
+
env->ReleaseStringUTFChars(term, c_term);
|
123
|
+
return _positioniterator->put(itr);
|
124
|
+
CATCH(-1)
|
125
|
+
}
|
126
|
+
|
127
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1allterms_1begin (JNIEnv *env, jclass clazz, jlong dbid) {
|
128
|
+
TRY
|
129
|
+
Database *db = (Database *) _database->get(dbid);
|
130
|
+
TermIterator *itr = new TermIterator(db->allterms_begin());
|
131
|
+
return _termiterator->put(itr);
|
132
|
+
CATCH(-1)
|
133
|
+
}
|
134
|
+
|
135
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1allterms_1end (JNIEnv *env, jclass clazz, jlong dbid) {
|
136
|
+
TRY
|
137
|
+
Database *db = (Database *) _database->get(dbid);
|
138
|
+
TermIterator *itr = new TermIterator(db->allterms_end());
|
139
|
+
return _termiterator->put(itr);
|
140
|
+
CATCH(-1)
|
141
|
+
}
|
142
|
+
|
143
|
+
JNIEXPORT jint JNICALL Java_org_xapian_XapianJNI_database_1get_1doccount (JNIEnv *env, jclass clazz, jlong dbid) {
|
144
|
+
TRY
|
145
|
+
Database *db = (Database *) _database->get(dbid);
|
146
|
+
return db->get_doccount();
|
147
|
+
CATCH(-1)
|
148
|
+
}
|
149
|
+
|
150
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1get_1lastdocid (JNIEnv *env, jclass clazz, jlong dbid) {
|
151
|
+
TRY
|
152
|
+
Database *db = (Database *) _database->get(dbid);
|
153
|
+
return db->get_lastdocid();
|
154
|
+
CATCH(-1)
|
155
|
+
}
|
156
|
+
|
157
|
+
JNIEXPORT jdouble JNICALL Java_org_xapian_XapianJNI_database_1get_1avlength (JNIEnv *env, jclass clazz, jlong dbid) {
|
158
|
+
TRY
|
159
|
+
Database *db = (Database *) _database->get(dbid);
|
160
|
+
return db->get_avlength();
|
161
|
+
CATCH(-1)
|
162
|
+
}
|
163
|
+
|
164
|
+
JNIEXPORT jint JNICALL Java_org_xapian_XapianJNI_database_1get_1termfreq (JNIEnv *env, jclass clazz, jlong dbid, jstring term) {
|
165
|
+
TRY
|
166
|
+
Database *db = (Database *) _database->get(dbid);
|
167
|
+
const char *c_term = env->GetStringUTFChars(term, 0);
|
168
|
+
string cpp_term(c_term, env->GetStringUTFLength(term));
|
169
|
+
int freq = db->get_termfreq(cpp_term);
|
170
|
+
env->ReleaseStringUTFChars(term, c_term);
|
171
|
+
return freq;
|
172
|
+
CATCH(-1)
|
173
|
+
}
|
174
|
+
|
175
|
+
JNIEXPORT jboolean JNICALL Java_org_xapian_XapianJNI_database_1term_1exists (JNIEnv *env, jclass clazz, jlong dbid, jstring term) {
|
176
|
+
TRY
|
177
|
+
Database *db = (Database *) _database->get(dbid);
|
178
|
+
const char *c_term = env->GetStringUTFChars(term, 0);
|
179
|
+
string cpp_term(c_term, env->GetStringUTFLength(term));
|
180
|
+
bool exists = db->term_exists(cpp_term);
|
181
|
+
env->ReleaseStringUTFChars(term, c_term);
|
182
|
+
return exists;
|
183
|
+
CATCH(0)
|
184
|
+
}
|
185
|
+
|
186
|
+
JNIEXPORT jint JNICALL Java_org_xapian_XapianJNI_database_1get_1collection_1freq (JNIEnv *env, jclass clazz, jlong dbid, jstring term) {
|
187
|
+
TRY
|
188
|
+
Database *db = (Database *) _database->get(dbid);
|
189
|
+
const char *c_term = env->GetStringUTFChars(term, 0);
|
190
|
+
string cpp_term(c_term, env->GetStringUTFLength(term));
|
191
|
+
int freq = db->get_collection_freq(cpp_term);
|
192
|
+
env->ReleaseStringUTFChars(term, c_term);
|
193
|
+
return freq;
|
194
|
+
CATCH(-1)
|
195
|
+
}
|
196
|
+
|
197
|
+
JNIEXPORT jdouble JNICALL Java_org_xapian_XapianJNI_database_1get_1doclength (JNIEnv *env, jclass clazz, jlong dbid, jlong docid) {
|
198
|
+
TRY
|
199
|
+
Database *db = (Database *) _database->get(dbid);
|
200
|
+
return db->get_doclength(docid);
|
201
|
+
CATCH(-1)
|
202
|
+
}
|
203
|
+
|
204
|
+
JNIEXPORT void JNICALL Java_org_xapian_XapianJNI_database_1keep_1alive (JNIEnv *env, jclass clazz, jlong dbid) {
|
205
|
+
TRY
|
206
|
+
Database *db = (Database *) _database->get(dbid);
|
207
|
+
db->keep_alive();
|
208
|
+
CATCH(;)
|
209
|
+
}
|
210
|
+
|
211
|
+
JNIEXPORT jlong JNICALL Java_org_xapian_XapianJNI_database_1get_1document (JNIEnv *env, jclass clazz, jlong dbid, jlong docid) {
|
212
|
+
TRY
|
213
|
+
Database *db = (Database *) _database->get(dbid);
|
214
|
+
Document *doc = new Document(db->get_document(docid));
|
215
|
+
return _document->put(doc);
|
216
|
+
CATCH(-1)
|
217
|
+
}
|
218
|
+
|
219
|
+
JNIEXPORT void JNICALL Java_org_xapian_XapianJNI_database_1finalize (JNIEnv *env, jclass clazz, jlong dbid) {
|
220
|
+
Database *db = (Database *) _database->remove(dbid);
|
221
|
+
if (db) delete db;
|
222
|
+
}
|