我很困惑Sphinx
。我說這個問題。
我的系統配置:爲什麼Sphinxapi不返回結果?
Ubuntu 16.04 LTS
Apache 2.4.18
PHP 5.6.21
MariaDB 10.1.14
sphinx 2.2.10
我的數據庫是test2
,它包含2個表(文檔和用戶)和1查看(搜索)。
文件(表):
- ID
- 名
用戶(表):
- ID
fname
lname
- 電子郵件
搜索(視圖):
sphinxid
itemid
- 數據
datatype
搜索視圖查詢是
CREATE ALGORITHM = UNDEFINED DEFINER = root
@localhost
SQL SECURITY DEFINER VIEW search
AS SELECT UUID_SHORT()AS sphinxid
, users
。 id
AS itemid
, CONCAT_WS(」」, users
。fname
, users
。lname
, users
。email
)AS data
, 1 AS datatype
FROM users
UNION SELECT UUID_SHORT()AS sphinxid
, documents
。 id
AS itemid
, documents
。name
AS data
, 2 AS datatype
FROM documents
斯芬克斯配置文件:
source my_search
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = myPass
sql_db = test2
sql_port = 3306 # optional, default is 3306
sql_query = \
SELECT sphinxid,itemid, data, datatype \
FROM test2.search;
sql_attr_uint = itemid
sql_attr_uint = data
}
index test1
{
source = my_search
path = /var/lib/sphinxsearch/data/test1
morphology = stem_en
min_word_len = 3
# min_prefix_len = 0
# enable_star = 0
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
# max_matches = 1000
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = /var/lib/sphinxsearch
}
我用這個命令,以使索引indexer --config /etc/sphinxsearch/sphinx.conf --all --rotate
。其結果是:
Sphinx 2.2.10-id64-release (2c212e0)
Copyright (c) 2001-2015, Andrew Aksyonoff
Copyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/etc/sphinxsearch/sphinx.conf'...
indexing index 'test1'...
collected 200 docs, 0.0 MB
total 200 docs, 200 bytes
total 0.007 sec, 28417 bytes/sec, 28417.16 docs/sec
total 2 reads, 0.000 sec, 1.5 kb/call avg, 0.0 msec/call avg
total 10 writes, 0.000 sec, 0.6 kb/call avg, 0.0 msec/call avg
rotating indices: successfully sent SIGHUP to searchd (pid=2287).
我用sphinxapi.php
爲客戶api
和我php
測試文件是:
<?php
include '../sphinxapi.php';
if(!empty($_GET['q'])){
var_dump($_GET['q']);
// Build search query
$cl = new SphinxClient();
$cl->SetServer("localhost", 9312);
$cl->SetMatchMode(SPH_MATCH_EXTENDED );
$cl->SetRankingMode (SPH_RANK_SPH04);
// Execute the query
$q = '"' . $cl->EscapeString($_GET['q']) . '"/1';
$searchresults = $cl->Query($q ,'test1');
var_dump($cl->GetLastError());
var_dump($cl->GetLastWarning());
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sphinx test 1</title>
</head>
<body>
<form name="search" method="get" action="">
<input type="text" name="q" id="q" />
<input type="submit" value="GO" class="form-submit" />
</form>
<p>
<pre>
<?php
if(!empty($searchresults)){
print_r($searchresults);
}
?>
</pre>
</p>
</body>
</html>
我看search view
和我選擇一個領域(Scarlett [email protected]
),但是當我搜索它(有點像「血色」),我沒有得到任何結果:
Array
(
[error] =>
[warning] =>
[status] => 0
[fields] => Array
(
[0] => datatype
)
[attrs] => Array
(
[itemid] => 1
[data] => 1
)
[total] => 0
[total_found] => 0
[time] => 0.000
[words] => Array
(
[scarlet] => Array
(
[docs] => 0
[hits] => 0
)
)
)
真的,我不知道爲什麼它retur什麼都沒有?
我使用這個命令mysql -h0 -P9306
根據獅身人面像tutorial.you可以在圖片中看到,我沒有任何數據(你可以看到我在sphinx.conf
查詢),並返回20行!(用戶表中有100行和文檔表有90行)。
我使用本教程Integrating Sphinx Search into a PHP
Application但我無法在我的應用程序中得到結果! :(
當我使用默認sphinx.conf
及其測試數據庫,我的應用程序works.I覺得我sphinx.conf
是錯誤的或者也許我的觀點(搜索)引起的!