File: README

package info (click to toggle)
sphinxsearch 2.2.11-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 25,720 kB
  • sloc: cpp: 102,259; xml: 85,608; sh: 9,259; php: 3,790; ansic: 3,158; yacc: 1,969; java: 1,336; ruby: 1,289; python: 1,062; pascal: 912; perl: 381; lex: 275; makefile: 150; sql: 77; cs: 35
file content (51 lines) | stat: -rw-r--r-- 1,454 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Pure C searchd client API library
Sphinx search engine, http://sphinxsearch.com/

API notes
----------

1. API can either copy the contents of passed pointer arguments,
or rely on the application that the pointer will not become invalid.
This is controlled on per-client basis; see 'copy_args' argument
to the sphinx_create() call.

When 'copy_args' is true, API will create and manage a copy of every
string and array passed to it. This causes additional malloc() pressure,
but makes calling code easier to write.

When 'copy_args' is false, API expects that pointers passed to
sphinx_set_xxx() calls will still be valid at the time when sphinx_query()
or sphinx_add_query() are called.

Rule of thumb: when 'copy_args' is false, do not free query arguments
until you have the search result. Example code for that case:

VALID CODE:

	char * my_filter_name;

	my_filter_name = malloc ( 256 );
	strncpy ( my_filter_name, "test", 256 );

	sphinx_add_filter_range ( client, my_filter_name, 10, 20, false );
	result = sphinx_query ( client );

	free ( my_filter_name );
	my_filter_name = NULL;

INVALID CODE:

	void setup_my_filter ( sphinx_client * client )
	{
		char buffer[256];
		strncpy ( buffer, "test", sizeof(buffer) );

		// INVALID! by the time when sphinx_query() is called,
		// buffer will be out of scope
		sphinx_add_filter_range ( client, buffer, 10, 20, false );
	}

	setup_my_filter ( client );
	result = sphinx_query ( client );

--eof--