Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP और MySQL के साथ Sphinx का उपयोग करने के लिए मार्गदर्शिका

मैं इस पोस्ट पर आया लेकिन मुझे कोई जवाब नहीं मिला जिसे मैं देखना चाहता था। तो यहाँ मेरी त्वरित प्रारंभ मार्गदर्शिका है:

<मजबूत>1. स्फिंक्स स्थापित करें

Homebrew के साथ Mac पर:

brew install sphinx

यम के साथ Amazon Linux (CentOS) पर:

yum install sphinx

<मजबूत>2. स्फिंक्स कॉन्फ़िगरेशन बनाएं

स्फिंक्स कॉन्फिग टेम्पलेट के साथ आता है। कॉन्फ़िगरेशन निर्देशिका में sphinx.conf.dist खोजें:

Homebrew के साथ स्थापित Mac पर:

/usr/local/Cellar/sphinx/<sphinx version>/etc

यम के साथ स्थापित Amazon Linux पर:

/etc/sphinx

यह बहुत सीधा है लेकिन इसमें नौसिखिया के लिए बहुत अधिक सेटिंग्स हो सकती हैं। ऐसे मामले में आप इस सरल विन्यास का उपयोग कर सकते हैं:

source TestSource {
    type = mysql
    sql_host = <host>
    sql_user = <user>
    sql_pass = <password>
    sql_db = <db>

    sql_query_range = select min(id), max(id) from TestTable
    sql_range_step = 2048

    sql_query = select id, some_info from TestTable\
        where id >= $start and id <= $end
}

index TestIndex {
    source = TestSource
    path = /var/lib/sphinx/test-index
    min_word_len = 3
    min_infix_len = 3
}

searchd {
    log = /var/log/sphinx/searchd.log
    query_log = /var/log/sphinx/query.log
    pid_file = /var/run/searchd.pid

    max_matches = 200

    listen = localhost:9312
}

मैंने इस कॉन्फिगर में max_matches सेटिंग जोड़ी है क्योंकि सब कुछ काम करने के बाद मेरा पहला सवाल यह था कि "मुझे हमेशा केवल 20 खोज परिणाम ही क्यों मिलते हैं?"। max_matches के साथ आप खोज परिणाम संख्या की सीमा निर्धारित कर सकते हैं।

<मजबूत>3. अनुक्रमणिका का उपयोग करके अनुक्रमणिका बनाएं

indexer --all

<मजबूत>4. स्फिंक्स डेमॉन चलाएं

sudo searchd -c /path/to/config/sphinx.conf

<मजबूत>5. PHP स्फिंक्स एक्सटेंशन इंस्टॉल करें

Homebrew के साथ Mac पर:

brew install homebrew/php/php56-sphinx

यम के साथ Amazon Linux पर:

yum install libsphinxclient
pecl install sphinx

<मजबूत>6. PHP से अपनी अनुक्रमणिका क्वेरी करें

$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);

$result = $index->query('some search term', 'TestIndex');

print_r($result);

किसी भी त्रुटि के मामले में आप निम्न विधि से अधिक जानकारी प्राप्त कर सकते हैं:

$index->getLastError();

<मजबूत>7. अप टू डेट इंडेक्स रखें

अप टू डेट इंडेक्स बनाए रखने के लिए आप दो इंडेक्स का उपयोग कर सकते हैं:

  1. मुख्य अनुक्रमणिका, जिसे अक्सर अपडेट नहीं किया जाता है (प्रति सप्ताह, महीने, आदि में एक बार)
  2. और डेल्टा इंडेक्स, जो अक्सर अपडेट होता है (हर घंटे, 5 मिनट, आदि)

हर बार डेल्टा इंडेक्स को फिर से इंडेक्स किया जाता है, इसे मुख्य इंडेक्स में मिला दिया जाता है

इस लिंक का अनुसरण करें http://www.sphinxconsultant.com/sphinx-search-delta -इंडेक्सिंग/ इस दृष्टिकोण के बारे में और अधिक पढ़ने के लिए।

लिंक जो मुझे उपयोगी लगे:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सर्वोत्तम अभ्यास बहु भाषा वेबसाइट

  2. क्या किसी को SQL डेटाबेस में BSON ObjectId मानों को संग्रहीत करने का एक प्रभावी तरीका मिला है?

  3. Sequelize.js विदेशी कुंजी

  4. केस संवेदनशील तालिका नामों को कैसे बल दें?

  5. INSERT INTO नोड-mysql के साथ विफल रहता है