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.
Files changed (328) hide show
  1. data/.gitignore +3 -0
  2. data/AUTHORS +1 -0
  3. data/COPYING +340 -0
  4. data/ChangeLog +5876 -0
  5. data/HACKING +101 -0
  6. data/INSTALL +293 -0
  7. data/Makefile +722 -0
  8. data/Makefile.am +26 -0
  9. data/Makefile.in +722 -0
  10. data/NEWS +2110 -0
  11. data/README +59 -0
  12. data/Rakefile +51 -0
  13. data/TODO +47 -0
  14. data/aclocal.m4 +7675 -0
  15. data/config.guess +1501 -0
  16. data/config.h +56 -0
  17. data/config.h.in +55 -0
  18. data/config.status +1298 -0
  19. data/config.sub +1705 -0
  20. data/configure +18536 -0
  21. data/configure.ac +944 -0
  22. data/csharp/.deps/xapian_wrap.Plo +1 -0
  23. data/csharp/AssemblyInfo.cs +40 -0
  24. data/csharp/AssemblyInfo.cs.in +40 -0
  25. data/csharp/Auto.cs +46 -0
  26. data/csharp/BM25Weight.cs +107 -0
  27. data/csharp/BoolWeight.cs +103 -0
  28. data/csharp/Database.cs +275 -0
  29. data/csharp/DateValueRangeProcessor.cs +61 -0
  30. data/csharp/Document.cs +177 -0
  31. data/csharp/ESet.cs +94 -0
  32. data/csharp/ESetIterator.cs +117 -0
  33. data/csharp/Enquire.cs +274 -0
  34. data/csharp/ExpandDecider.cs +76 -0
  35. data/csharp/Flint.cs +58 -0
  36. data/csharp/InMemory.cs +46 -0
  37. data/csharp/MSet.cs +193 -0
  38. data/csharp/MSetIterator.cs +141 -0
  39. data/csharp/Makefile +868 -0
  40. data/csharp/Makefile.am +106 -0
  41. data/csharp/Makefile.in +868 -0
  42. data/csharp/MatchDecider.cs +76 -0
  43. data/csharp/MultiValueSorter.cs +63 -0
  44. data/csharp/NumberValueRangeProcessor.cs +61 -0
  45. data/csharp/PositionIterator.cs +101 -0
  46. data/csharp/PostingIterator.cs +125 -0
  47. data/csharp/Quartz.cs +58 -0
  48. data/csharp/Query.cs +150 -0
  49. data/csharp/QueryParser.cs +174 -0
  50. data/csharp/RSet.cs +102 -0
  51. data/csharp/Remote.cs +100 -0
  52. data/csharp/SWIGTYPE_p_std__string.cs +30 -0
  53. data/csharp/SWIGTYPE_p_std__vectorTXapian__Query_t.cs +30 -0
  54. data/csharp/SWIGTYPE_p_std__vectorTstd__string_t.cs +30 -0
  55. data/csharp/SimpleStopper.cs +64 -0
  56. data/csharp/SmokeTest.cs +178 -0
  57. data/csharp/Sorter.cs +76 -0
  58. data/csharp/Stem.cs +66 -0
  59. data/csharp/Stopper.cs +91 -0
  60. data/csharp/StringValueRangeProcessor.cs +53 -0
  61. data/csharp/TermGenerator.cs +152 -0
  62. data/csharp/TermIterator.cs +125 -0
  63. data/csharp/TradWeight.cs +107 -0
  64. data/csharp/ValueIterator.cs +102 -0
  65. data/csharp/ValueRangeProcessor.cs +76 -0
  66. data/csharp/Version.cs +60 -0
  67. data/csharp/Weight.cs +93 -0
  68. data/csharp/WritableDatabase.cs +153 -0
  69. data/csharp/Xapian.cs +65 -0
  70. data/csharp/XapianPINVOKE.cs +1527 -0
  71. data/csharp/docs/Makefile +450 -0
  72. data/csharp/docs/Makefile.am +16 -0
  73. data/csharp/docs/Makefile.in +450 -0
  74. data/csharp/docs/examples/SimpleExpand.cs +109 -0
  75. data/csharp/docs/examples/SimpleIndex.cs +71 -0
  76. data/csharp/docs/examples/SimpleSearch.cs +78 -0
  77. data/csharp/docs/index.html +211 -0
  78. data/csharp/util.i +233 -0
  79. data/csharp/xapian_wrap.cc +10338 -0
  80. data/csharp/xapian_wrap.h +93 -0
  81. data/depcomp +632 -0
  82. data/extconf.rb +20 -0
  83. data/generic/except.i +80 -0
  84. data/generic/generic.mk +48 -0
  85. data/install-sh +520 -0
  86. data/java-swig/.deps/xapian_wrap.Plo +1 -0
  87. data/java-swig/Auto.java +35 -0
  88. data/java-swig/BM25Weight.java +81 -0
  89. data/java-swig/BoolWeight.java +77 -0
  90. data/java-swig/Database.java +195 -0
  91. data/java-swig/DateValueRangeProcessor.java +51 -0
  92. data/java-swig/Document.java +135 -0
  93. data/java-swig/ESet.java +71 -0
  94. data/java-swig/ESetIterator.java +71 -0
  95. data/java-swig/Enquire.java +246 -0
  96. data/java-swig/ExpandDecider.java +59 -0
  97. data/java-swig/Flint.java +43 -0
  98. data/java-swig/InMemory.java +35 -0
  99. data/java-swig/MSet.java +143 -0
  100. data/java-swig/MSetIterator.java +87 -0
  101. data/java-swig/Makefile +781 -0
  102. data/java-swig/Makefile.am +132 -0
  103. data/java-swig/Makefile.in +781 -0
  104. data/java-swig/MatchDecider.java +59 -0
  105. data/java-swig/MultiValueSorter.java +51 -0
  106. data/java-swig/NumberValueRangeProcessor.java +51 -0
  107. data/java-swig/PositionIterator.java +63 -0
  108. data/java-swig/PostingIterator.java +83 -0
  109. data/java-swig/Quartz.java +43 -0
  110. data/java-swig/Query.java +189 -0
  111. data/java-swig/QueryParser.java +214 -0
  112. data/java-swig/RSet.java +79 -0
  113. data/java-swig/Remote.java +71 -0
  114. data/java-swig/SWIGTYPE_p_std__string.java +25 -0
  115. data/java-swig/SimpleStopper.java +51 -0
  116. data/java-swig/SmokeTest.java +161 -0
  117. data/java-swig/Sorter.java +59 -0
  118. data/java-swig/Stem.java +51 -0
  119. data/java-swig/Stopper.java +63 -0
  120. data/java-swig/StringValueRangeProcessor.java +43 -0
  121. data/java-swig/TermGenerator.java +158 -0
  122. data/java-swig/TermIterator.java +83 -0
  123. data/java-swig/TradWeight.java +81 -0
  124. data/java-swig/ValueIterator.java +67 -0
  125. data/java-swig/ValueRangeProcessor.java +59 -0
  126. data/java-swig/Version.java +47 -0
  127. data/java-swig/Weight.java +68 -0
  128. data/java-swig/WritableDatabase.java +123 -0
  129. data/java-swig/Xapian.java +39 -0
  130. data/java-swig/XapianConstants.java +15 -0
  131. data/java-swig/XapianJNI.java +508 -0
  132. data/java-swig/run-java-test +6 -0
  133. data/java-swig/xapian_wrap.cc +12594 -0
  134. data/java-swig/xapian_wrap.h +91 -0
  135. data/java/Makefile +660 -0
  136. data/java/Makefile.am +35 -0
  137. data/java/Makefile.in +660 -0
  138. data/java/README +76 -0
  139. data/java/SmokeTest.java +148 -0
  140. data/java/native/.deps/Database.Plo +1 -0
  141. data/java/native/.deps/Document.Plo +1 -0
  142. data/java/native/.deps/ESet.Plo +1 -0
  143. data/java/native/.deps/ESetIterator.Plo +1 -0
  144. data/java/native/.deps/Enquire.Plo +1 -0
  145. data/java/native/.deps/MSet.Plo +1 -0
  146. data/java/native/.deps/MSetIterator.Plo +1 -0
  147. data/java/native/.deps/PositionIterator.Plo +1 -0
  148. data/java/native/.deps/Query.Plo +1 -0
  149. data/java/native/.deps/RSet.Plo +1 -0
  150. data/java/native/.deps/Stem.Plo +1 -0
  151. data/java/native/.deps/TermIterator.Plo +1 -0
  152. data/java/native/.deps/WritableDatabase.Plo +1 -0
  153. data/java/native/.deps/org_xapian_XapianJNI.Plo +1 -0
  154. data/java/native/.deps/utils.Plo +1 -0
  155. data/java/native/Database.cc +222 -0
  156. data/java/native/Document.cc +173 -0
  157. data/java/native/ESet.cc +79 -0
  158. data/java/native/ESetIterator.cc +82 -0
  159. data/java/native/Enquire.cc +271 -0
  160. data/java/native/MSet.cc +169 -0
  161. data/java/native/MSetIterator.cc +107 -0
  162. data/java/native/Makefile +594 -0
  163. data/java/native/Makefile.am +51 -0
  164. data/java/native/Makefile.in +594 -0
  165. data/java/native/PositionIterator.cc +64 -0
  166. data/java/native/Query.cc +180 -0
  167. data/java/native/RSet.cc +98 -0
  168. data/java/native/Stem.cc +75 -0
  169. data/java/native/TermIterator.cc +107 -0
  170. data/java/native/WritableDatabase.cc +118 -0
  171. data/java/native/XapianObjectHolder.h +115 -0
  172. data/java/native/org_xapian_XapianJNI.cc +78 -0
  173. data/java/native/org_xapian_XapianJNI.h +1369 -0
  174. data/java/native/utils.cc +51 -0
  175. data/java/native/xapian_jni.h +116 -0
  176. data/java/org/xapian/Database.java +148 -0
  177. data/java/org/xapian/Document.java +135 -0
  178. data/java/org/xapian/ESet.java +66 -0
  179. data/java/org/xapian/ESetIterator.java +97 -0
  180. data/java/org/xapian/Enquire.java +136 -0
  181. data/java/org/xapian/ExpandDecider.java +30 -0
  182. data/java/org/xapian/MSet.java +104 -0
  183. data/java/org/xapian/MSetIterator.java +132 -0
  184. data/java/org/xapian/Makefile +580 -0
  185. data/java/org/xapian/Makefile.am +38 -0
  186. data/java/org/xapian/Makefile.in +580 -0
  187. data/java/org/xapian/MatchDecider.java +30 -0
  188. data/java/org/xapian/PositionIterator.java +89 -0
  189. data/java/org/xapian/Query.java +190 -0
  190. data/java/org/xapian/RSet.java +89 -0
  191. data/java/org/xapian/Stem.java +80 -0
  192. data/java/org/xapian/TermIterator.java +142 -0
  193. data/java/org/xapian/WritableDatabase.java +92 -0
  194. data/java/org/xapian/Xapian.java +114 -0
  195. data/java/org/xapian/XapianJNI.java +444 -0
  196. data/java/org/xapian/errors/AssertionError.java +40 -0
  197. data/java/org/xapian/errors/DatabaseCorruptError.java +40 -0
  198. data/java/org/xapian/errors/DatabaseError.java +40 -0
  199. data/java/org/xapian/errors/DatabaseLockError.java +40 -0
  200. data/java/org/xapian/errors/DatabaseModifiedError.java +40 -0
  201. data/java/org/xapian/errors/DatabaseOpeningError.java +40 -0
  202. data/java/org/xapian/errors/DocNotFoundError.java +40 -0
  203. data/java/org/xapian/errors/FeatureUnavailableError.java +40 -0
  204. data/java/org/xapian/errors/InternalError.java +40 -0
  205. data/java/org/xapian/errors/InvalidArgumentError.java +40 -0
  206. data/java/org/xapian/errors/InvalidOperationError.java +40 -0
  207. data/java/org/xapian/errors/LogicError.java +40 -0
  208. data/java/org/xapian/errors/Makefile +416 -0
  209. data/java/org/xapian/errors/Makefile.am +32 -0
  210. data/java/org/xapian/errors/Makefile.in +416 -0
  211. data/java/org/xapian/errors/NetworkError.java +40 -0
  212. data/java/org/xapian/errors/NetworkTimeoutError.java +40 -0
  213. data/java/org/xapian/errors/RangeError.java +40 -0
  214. data/java/org/xapian/errors/RuntimeError.java +40 -0
  215. data/java/org/xapian/errors/UnimplementedError.java +40 -0
  216. data/java/org/xapian/errors/XapianError.java +40 -0
  217. data/java/org/xapian/errors/XapianRuntimeError.java +49 -0
  218. data/java/org/xapian/examples/Makefile +391 -0
  219. data/java/org/xapian/examples/Makefile.am +8 -0
  220. data/java/org/xapian/examples/Makefile.in +391 -0
  221. data/java/org/xapian/examples/SimpleIndex.java +68 -0
  222. data/java/org/xapian/examples/SimpleSearch.java +71 -0
  223. data/java/run-java-test +6 -0
  224. data/libtool +7618 -0
  225. data/ltmain.sh +6956 -0
  226. data/mhs-xapian.gemspec +368 -0
  227. data/missing +378 -0
  228. data/php/.deps/xapian_wrap.Plo +1 -0
  229. data/php/Makefile +871 -0
  230. data/php/Makefile.am +82 -0
  231. data/php/Makefile.in +871 -0
  232. data/php/docs/Makefile +453 -0
  233. data/php/docs/Makefile.am +19 -0
  234. data/php/docs/Makefile.in +453 -0
  235. data/php/docs/examples/simpleexpand.php4 +108 -0
  236. data/php/docs/examples/simpleexpand.php5 +104 -0
  237. data/php/docs/examples/simpleindex.php4 +76 -0
  238. data/php/docs/examples/simpleindex.php5 +73 -0
  239. data/php/docs/examples/simplesearch.php4 +75 -0
  240. data/php/docs/examples/simplesearch.php5 +72 -0
  241. data/php/docs/index.html +313 -0
  242. data/php/except.i +98 -0
  243. data/php/php4/php_xapian.h +323 -0
  244. data/php/php4/xapian.php +32 -0
  245. data/php/php4/xapian_wrap.cc +27656 -0
  246. data/php/php5/php_xapian.h +319 -0
  247. data/php/php5/xapian.php +1566 -0
  248. data/php/php5/xapian_wrap.cc +24330 -0
  249. data/php/smoketest.php +246 -0
  250. data/php/smoketest4.php +84 -0
  251. data/php/smoketest5.php +79 -0
  252. data/php/util.i +187 -0
  253. data/python/.deps/xapian_wrap.Plo +1 -0
  254. data/python/Makefile +891 -0
  255. data/python/Makefile.am +105 -0
  256. data/python/Makefile.in +891 -0
  257. data/python/doccomments.i +5134 -0
  258. data/python/docs/Makefile +448 -0
  259. data/python/docs/Makefile.am +14 -0
  260. data/python/docs/Makefile.in +448 -0
  261. data/python/docs/examples/simpleexpand.py +98 -0
  262. data/python/docs/examples/simpleindex.py +65 -0
  263. data/python/docs/examples/simplematchdecider.py +78 -0
  264. data/python/docs/examples/simplesearch.py +65 -0
  265. data/python/docs/index.html +420 -0
  266. data/python/except.i +290 -0
  267. data/python/extra.i +1048 -0
  268. data/python/extracomments.i +28 -0
  269. data/python/generate-python-exceptions +189 -0
  270. data/python/generate-python-exceptions.in +189 -0
  271. data/python/modern/xapian.py +5662 -0
  272. data/python/modern/xapian_wrap.cc +35170 -0
  273. data/python/modern/xapian_wrap.h +244 -0
  274. data/python/pythontest.py +1110 -0
  275. data/python/smoketest.py +328 -0
  276. data/python/testsuite.py +382 -0
  277. data/python/util.i +517 -0
  278. data/ruby/.deps/xapian_wrap.Plo +494 -0
  279. data/ruby/.libs/_xapian.bundle +0 -0
  280. data/ruby/.libs/_xapian.bundle.dSYM/Contents/Info.plist +25 -0
  281. data/ruby/.libs/_xapian.bundle.dSYM/Contents/Resources/DWARF/_xapian.bundle +0 -0
  282. data/ruby/.libs/_xapian.la +35 -0
  283. data/ruby/.libs/_xapian.lai +35 -0
  284. data/ruby/Makefile +854 -0
  285. data/ruby/Makefile.am +62 -0
  286. data/ruby/Makefile.in +854 -0
  287. data/ruby/_xapian.la +35 -0
  288. data/ruby/docs/Makefile +487 -0
  289. data/ruby/docs/Makefile.am +50 -0
  290. data/ruby/docs/Makefile.in +487 -0
  291. data/ruby/docs/examples/simpleexpand.rb +98 -0
  292. data/ruby/docs/examples/simpleindex.rb +60 -0
  293. data/ruby/docs/examples/simplematchdecider.rb +74 -0
  294. data/ruby/docs/examples/simplesearch.rb +63 -0
  295. data/ruby/docs/index.html +197 -0
  296. data/ruby/smoketest.rb +211 -0
  297. data/ruby/util.i +232 -0
  298. data/ruby/xapian.rb +280 -0
  299. data/ruby/xapian_wrap.cc +25837 -0
  300. data/ruby/xapian_wrap.h +65 -0
  301. data/ruby/xapian_wrap.lo +12 -0
  302. data/skiptest +2 -0
  303. data/stamp-h1 +1 -0
  304. data/tcl8/.deps/xapian_wrap.Plo +1 -0
  305. data/tcl8/Makefile +835 -0
  306. data/tcl8/Makefile.am +49 -0
  307. data/tcl8/Makefile.in +835 -0
  308. data/tcl8/docs/Makefile +448 -0
  309. data/tcl8/docs/Makefile.am +14 -0
  310. data/tcl8/docs/Makefile.in +448 -0
  311. data/tcl8/docs/examples/simpleexpand.tcl +104 -0
  312. data/tcl8/docs/examples/simpleindex.tcl +68 -0
  313. data/tcl8/docs/examples/simplesearch.tcl +66 -0
  314. data/tcl8/docs/index.html +208 -0
  315. data/tcl8/except.i +48 -0
  316. data/tcl8/pkgIndex.tcl +1 -0
  317. data/tcl8/pkgIndex.tcl.in +1 -0
  318. data/tcl8/run-tcl-test +15 -0
  319. data/tcl8/runtest.tcl +29 -0
  320. data/tcl8/smoketest.tcl +155 -0
  321. data/tcl8/util.i +76 -0
  322. data/tcl8/xapian_wrap.cc +20900 -0
  323. data/xapian-bindings.spec +206 -0
  324. data/xapian-bindings.spec.in +206 -0
  325. data/xapian-version.h +1 -0
  326. data/xapian-version.h.in +1 -0
  327. data/xapian.i +939 -0
  328. 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).
@@ -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
+ }