1 | <?
|
---|
2 | /* FROM phpinfo()
|
---|
3 | * xapian
|
---|
4 | *
|
---|
5 | * Xapian Support => enabled
|
---|
6 | * Xapian Compiled Version => 0.9.6
|
---|
7 | */
|
---|
8 |
|
---|
9 | // set up a search db
|
---|
10 | $index_path = "xapian_db";
|
---|
11 | $index_pointer = new_WritableDatabase($index_path, DB_CREATE_OR_OPEN);
|
---|
12 |
|
---|
13 | $document_pointer = new_document();
|
---|
14 |
|
---|
15 | // add some documents with different values on the 0:th position
|
---|
16 | $number_to_add = 5;
|
---|
17 | for ($i = 1; $i <= $number_to_add; $i++)
|
---|
18 | {
|
---|
19 | $document_pointer = new_document();
|
---|
20 |
|
---|
21 | // add a random value in position 0
|
---|
22 | document_add_value($document_pointer, 0, rand(1, 500));
|
---|
23 |
|
---|
24 | // add something to search on
|
---|
25 | document_add_term($document_pointer, "bug", 1);
|
---|
26 |
|
---|
27 | $document_id = writabledatabase_add_document($index_pointer, $document_pointer);
|
---|
28 | }
|
---|
29 |
|
---|
30 | WritableDatabase_flush($index_pointer);
|
---|
31 |
|
---|
32 | // now search for 'bug'
|
---|
33 | $query = "bug";
|
---|
34 | $query_parser = new_QueryParser();
|
---|
35 | $query_pointer = QueryParser_parse_query($query_parser, $query);
|
---|
36 |
|
---|
37 | // create an enquire resource
|
---|
38 | $enquire_pointer = new_Enquire($index_pointer);
|
---|
39 | Enquire_set_query($enquire_pointer, $query_pointer);
|
---|
40 |
|
---|
41 | // order the results by the value in position zero in ascending order (none of these appear to work)
|
---|
42 | Enquire_set_sort_by_value($enquire_pointer, 0, true);
|
---|
43 | // Enquire_set_sort_by_value($enquire_pointer, 0, false);
|
---|
44 | // Enquire_set_sort_by_value_then_relevance($enquire_pointer, 0, true);
|
---|
45 | // Enquire_set_sort_by_value_then_relevance($enquire_pointer, 0, false);
|
---|
46 |
|
---|
47 | $result_pointer = Enquire_get_mset($enquire_pointer, 0, 10);
|
---|
48 | $result = getResultArray($result_pointer);
|
---|
49 |
|
---|
50 | print_r($result);
|
---|
51 |
|
---|
52 |
|
---|
53 |
|
---|
54 |
|
---|
55 |
|
---|
56 |
|
---|
57 |
|
---|
58 |
|
---|
59 | function getResultArray($result_pointer)
|
---|
60 | {
|
---|
61 | $result["total_hits"] = MSet_get_matches_estimated($result_pointer);
|
---|
62 |
|
---|
63 | $i = 0;
|
---|
64 | $mset_counter = mset_begin($result_pointer);
|
---|
65 | while (!msetiterator_equals($mset_counter, mset_end($result_pointer)))
|
---|
66 | {
|
---|
67 | $document_pointer = msetiterator_get_document($mset_counter);
|
---|
68 |
|
---|
69 | $result["result"][$i]["document_id"] = msetiterator_get_docid($mset_counter);
|
---|
70 |
|
---|
71 | $value_counter = document_values_begin($document_pointer);
|
---|
72 | while (!valueiterator_equals($value_counter, document_values_end($document_pointer)))
|
---|
73 | {
|
---|
74 | $result["result"][$i]["values"][] = valueiterator_get_value($value_counter);
|
---|
75 |
|
---|
76 | valueiterator_next($value_counter);
|
---|
77 | }
|
---|
78 |
|
---|
79 | $i++;
|
---|
80 | msetiterator_next($mset_counter);
|
---|
81 | }
|
---|
82 |
|
---|
83 | return $result;
|
---|
84 | }
|
---|
85 | ?> |
---|