2016-05-22 10 views
0

私は約Sphinxを混同しています。私は問題について言います。
私のシステム構成:なぜスフィンクサピは結果を返さないのですか?

  • 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

検索ビューのクエリがsphinxidusers AS アルゴリズム= UNDEFINED DEFINER = root localhost @ SQLのセキュリティDEFINER VIEW search AS SELECT UUID_SHORTを()CREATE

です。 itemid AS id、 CONCAT_WS(」」、 usersfnameuserslnameusersemaildata AS、 AS users UNION SELECT UUID_SHORT()、 documents FROM datatype AS。 id AS itemid, documents。私は、インデックスindexer --config /etc/sphinxsearch/sphinx.conf --all --rotateを作るために、このコマンドを使用

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 
} 

documents

Sphinxの設定ファイルからdatatype AS 2 、data AS name。そして、その結果は次のとおりです。

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). 

私はクライアントapiとしてsphinxapi.phpを使用して、私のphpテストファイルがある:私はsearch viewを見て、私は1つのフィールド(Scarlett [email protected])を選択しますが、私はそれを検索するとき

<?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> 

(スカーレットのようなもの)、私は結果が得られません:

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 
      ) 

    ) 
) 

本当に私はなぜそれが後退するのかわかりません何もない?私はtutorial.youは私がどのようなデータを持っていない画像で見ることができスフィンクスによると、このコマンドmysql -h0 -P9306を使用します(あなたがsphinx.confの私のクエリを見ることができる)と、それは20行を返します!(ユーザー表ました


100行とドキュメントテーブルは90行あります)。 <code>mysql -h0 -P9306</code> result

私はこのチュートリアルIntegrating Sphinx Search into a PHP Applicationを使用しますが、私のアプリケーションに結果が得られません! :(


私はデフォルトsphinx.confとそのテスト・データベースを使用する場合は、私のアプリケーションが私のsphinx.confが間違っていると思うworks.Iまたは多分それは私のビュー(検索)によって引き起こされる!

答えて

1

は、クエリ

を見ます>自動 - 各ターンで

  • sphinxidを取る
    SELECT sphinxid,itemid, data, datatype \ 
          FROM test2.search; 
    

    >(起因sql_attr_uintに)uint attribute

  • データ型に作ら - - 言及していないので、テキストfield(起因sql_attr_uintに)uint attribute
  • データに作ら> - document_id(最初の列)
  • アイテムID。

しかし、あなたのビュー

... CONCAT_WS(' ', users.fname, users.lname, users.email) AS data, 
1 AS datatype ... 

あなたの実際のテキストは、「データ」であるようなので、整数属性に格納されている、見えます。うまくいきません!

sql_attr_uint   = data 

はタイプミスで、代わりに

sql_attr_uint   = datatype 

する必要があるということ? (データをテキストフィールドとしてインデックスに残しておきます)

関連する問題