आप इन खोजों के लिए एक अलग तालिका की स्थापना पर विचार किया है? MySQL's full text search केवल MyISAM तालिकाओं के साथ काम करता है ताकि आप संभवतः उस महत्वपूर्ण डेटा के साथ पूर्ण टेक्स्ट खोज को मिश्रित नहीं करना चाहते (जब तक, निश्चित रूप से, आपके पास विदेशी कुंजी और संदर्भित अखंडता के लिए कुछ अजीब विचलन नहीं है)।
दृष्टिकोण मैं पहले उपयोग किए गए मूल रूप से यह है:
- एक सरल (आईडी, खोज_पाठ) संरचना के साथ एक अलग तालिका सेट करें।
id
आप जिस चीज़ को खोज रहे हैं उसके id
से मेल खाता है।
search_text
सबकुछ (बॉडी टेक्स्ट, शीर्षक, लेखक का नाम, ...) है जिसे आप टेक्स्ट के एक ब्लॉब में मैश किए हुए खोजना चाहते हैं।
- खोज तालिका पर full text indexing जोड़ें।
- उचित
search_text
स्ट्रिंग को सादा पाठ के रूप में बनाने के लिए अपनी डेटाबेस अपडेट प्रक्रिया अपडेट करें; यह वह जगह है जहां आप एचटीएमएल को बाहर निकाल देंगे और संभवतः कुछ अन्य मैपिंग्स (जैसे कि "ए +" जैसी चीज़ों को विस्तारित करने के लिए जो पूर्ण पाठ खोज मिलेगी) लागू करें।
- खोज करते समय, आप उसी मैपिंग को लागू करते हैं जब आप खोज योग्य डेटा पर लागू होते हैं और फिर मैचों के लिए अपनी खोज तालिका में देखें।
यह (पुनरावृत्ति के माध्यम से खोज पाठ के विभिन्न घटकों भार जैसे द्वारा अपने HTML समस्या का हल है, तो आप HTML सामग्री आसानी से की तुलना में अधिक खोज करने देता है, और आप धुन करने की अनुमति देता खोज परिणामों यदि आप टैग ज्यादा महत्वपूर्ण होना चाहता हूँ बॉडी टेक्स्ट की तुलना में, search_text
बनाने के दौरान टैग को दो या तीन बार जोड़ें)।
आपको HTML को हटाने या अनदेखा करने के लिए अपने टेक्स्ट को संसाधित करना होगा। यह दृष्टिकोण आपको हर खोज पर इसे करने के बजाए बस एक बार ऐसा करने देता है।
स्रोत
2011-07-06 01:45:08
सरल समाधान हमेशा सर्वोत्तम होते हैं। धन्यवाद। – HoldOffHunger