2009-04-27 10 views
11

मैं PHP में एक सरल आगे सूचकांक को लागू करने के लिए देख रहा हूँ। हां, मैं समझता हूं कि PHP कार्य के लिए शायद ही सबसे अच्छा उपकरण है, लेकिन मैं इसे वैसे भी करना चाहता हूं। इसके पीछे तर्क सरल है: मुझे एक और PHP में चाहिए।PHP में अग्रेषित इंडेक्स को लागू करने के बारे में कोई कैसे जा सकता है?

हमें कुछ बुनियादी मान्यताओं करते हैं:

  1. पूरे Interweb के बारे में पाँच हजार HTML और/या सादे-पाठ दस्तावेजों होते हैं। प्रत्येक दस्तावेज़ किसी विशेष डोमेन (यूआईडी) के भीतर रहता है। हमारे काल्पनिक गुफाओं के बीच इंटरवेब में कोई अन्य स्वामित्व/आर्केन प्रारूप मौजूद नहीं है।

  2. हमारे भयानक पीएचपी आधारित आगे अनुक्रमण एल्गोरिथ्म के परिणाम की तर्ज पर किया जाना चाहिए:

    UID1 -> index.html -> हेलेन, वह था, चैंपियन,, freckles

    साथ UID1 -> foo.html -> चिकन, किसानों, जाना, घर, खाने, भेड़

    UID2 -> blah.html -> अगले, सप्ताह, badgerwatch पर,

    UID2 -> gah.txt -> एक, एक, और, एक, है, नहीं, संख्या

आदर्श रूप से, मुझे अपने सबसे प्राथमिक, टोकननाइजेशन/शब्द सीमा असंबद्धता/अंश-भाषण-टैगिंग की अवधारणाओं पर भी ध्यान में रखना चाहिए। बेशक, मुझे पता है कि यह इच्छाधारी सोच है, और इसलिए द्वारा पार्स पर किसी भी योग्य प्रयास काल्पनिक दस्तावेजों विनम्र ने कहा:

  1. क्रम में शब्दों की एक सूची के रूप में दस्तावेज़ भीतर वास्तविक शाब्दिक सामग्री सामान निकाला जा रहा है में जो उन्हें प्रस्तुत किया गया है।
  2. हर समय, एक UIDs का (जो हो सकता है, उदाहरण के लिए, एक डोमेन,) दस्तावेज़ का नाम (डोमेन के भीतर संसाधन) के बाद सूची और अंत में सूची की गणना करने के लिए किसी भी कचरा ऐसे <script> के रूप में और <html> टैग अनदेखी उस दस्तावेज़ के लिए शब्दों का। मुझे एहसास है कि एचटीएमएल टैग दस्तावेज़ के भीतर पाठ के अर्थपूर्ण प्लेसमेंट में एक महत्वपूर्ण भूमिका निभाते हैं, लेकिन इस चरण में मैं परवाह नहीं करता
  3. शब्दों को ध्यान में रखें जो शब्दों को सूची बना सकता है जब दस्तावेज़ दस्तावेज़ को पढ़ना कूलर है जिसे पहले पूरे दस्तावेज़ में पढ़ने की आवश्यकता है।

इस चरण में, मुझे स्टोरेज या स्टोरेज के बारे में परवाह नहीं है। यहां तक ​​कि 'प्रिंट' कथन का एक प्राथमिक सेट पर्याप्त होगा।

अग्रिम धन्यवाद, उम्मीद है कि यह पर्याप्त स्पष्ट था।

+1

+1 भयानक नमूना ग्रंथों के लिए +1 – Artelius

+0

क्या यह आपका होमवर्क है? ऐसा लगता है कि आप बस एक साधारण फ़ाइल पार्सर चाहते हैं .. – Louis

+4

@Lou होमवर्क? – karim79

उत्तर

7

http://simplehtmldom.sourceforge.net/

पर एक नजर डालें आप की तरह

$p = new Simple_dom_parser(); 
$p->load("www.page.com"); 
$p->find("body")->plaintext; 

somthing करते हैं और है कि आप सभी पाठ दे देंगे। सिर्फ लिंक

foreach ($p->find("a") as $link) 
{ 
    echo $link->innerText; 
} 

यह बहुत उपयोगी और शक्तिशाली है से अधिक पुनरावृति करना चाहते हैं। इसे देखें।

+0

त्वरित प्रश्न: क्या हम उपभोग किए जाने के बाद आगे की अनुक्रमणिका में प्रविष्टियों को हटाते हैं और इसे उलटा इंडेक्स में बदल देते हैं? – Roylee

5

मुझे नहीं लगता कि मैं तुम क्या करने की कोशिश कर रहे हैं पर पूरी तरह से स्पष्ट कर रहा हूँ, लेकिन आप काफी आसानी से एक सरल परिणाम प्राप्त कर सकते हैं:

  1. Tidy (a good introduction) के माध्यम से पेज सुनिश्चित करने के लिए चलाने के लिए यह वैध एचटीएमएल होगा।
  2. <body> से पहले (और सहित) सब कुछ फेंको।
  3. दस्तावेज़ के माध्यम से एक समय में एक चरित्र के माध्यम से कदम।
    1. चरित्र एक '<' है, तो निम्न पात्रों के साथ कुछ भी नहीं करते जब तक आप देखते हैं एक '>' (एचटीएमएल छोड़ देता है)
    2. चरित्र एक "शब्द चरित्र" (अल्फान्यूमेरिक, हाइफन है , संभवतः अधिक) इसे "वर्तमान शब्द" में शामिल करें।
    3. यदि चरित्र "गैर-शब्द वर्ण" (विराम चिह्न, स्थान, संभवतः अधिक) है, तो आगे की अनुक्रमणिका में शब्द सूची में "वर्तमान शब्द" जोड़ें, और "वर्तमान शब्द" साफ़ करें।
  4. ऊपर तक करें जब तक आप </body> पर क्लिक न करें।

वास्तव में इसके बारे में यही है, आप (आप शब्दों कि अनुक्रमित किया जाना चाहिए होने के लिए जावास्क्रिप्ट विचार करने के लिए नहीं करना चाहते हैं) <script> टैग जैसी चीजों से निपटने के लिए कुछ अपवादों में जोड़ने के लिए हो सकता है, लेकिन यह है कि आप एक बुनियादी देना चाहिए आगे सूचकांक।

+0

धन्यवाद चाड, यह वास्तव में सहायक है :) – karim79

संबंधित मुद्दे

 संबंधित मुद्दे