Merge branch '2.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / search / ISearchEngine.class.php
1 <?php
2 namespace wcf\system\search;
3 use wcf\system\database\util\PreparedStatementConditionBuilder;
4
5 /**
6 * Default interface for search engines.
7 *
8 * @author Alexander Ebert
9 * @copyright 2001-2014 WoltLab GmbH
10 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
11 * @package com.woltlab.wcf
12 * @subpackage system.search
13 * @category Community Framework
14 */
15 interface ISearchEngine {
16 /**
17 * Returns the condition builder class name required to provide conditions for getInnerJoin().
18 *
19 * @return string
20 */
21 public function getConditionBuilderClassName();
22
23 /**
24 * Returns the inner join query and the condition parameters. This method is allowed to return NULL
25 * for the 'fulltextCondition' index instead of a PreparedStatementConditionBuilder instance:
26 *
27 * array(
28 * 'fulltextCondition' => $fulltextCondition || null,
29 * 'sql' => $sql
30 * );
31 *
32 * @param string $objectTypeName
33 * @param string $q
34 * @param boolean $subjectOnly
35 * @param \wcf\system\database\util\PreparedStatementConditionBuilder $searchIndexCondition
36 * @param string $orderBy
37 * @param integer $limit
38 * @return array
39 */
40 public function getInnerJoin($objectTypeName, $q, $subjectOnly = false, PreparedStatementConditionBuilder $searchIndexCondition = null, $orderBy = 'time DESC', $limit = 1000);
41
42 /**
43 * Removes engine-specific special characters from a string.
44 *
45 * @param string $string
46 */
47 public function removeSpecialCharacters($string);
48
49 /**
50 * Searches for the given string and returns the data of the found messages.
51 *
52 * @param string $q
53 * @param array $objectTypes
54 * @param boolean $subjectOnly
55 * @param \wcf\system\database\util\PreparedStatementConditionBuilder $searchIndexCondition
56 * @param array $additionalConditions
57 * @param string $orderBy
58 * @param integer $limit
59 * @return array
60 */
61 public function search($q, array $objectTypes, $subjectOnly = false, PreparedStatementConditionBuilder $searchIndexCondition = null, array $additionalConditions = array(), $orderBy = 'time DESC', $limit = 1000);
62 }