दुर्भाग्य से, PHP में ऐसा करने महंगे है लेकिन, आप निश्चित रूप से छोटे डेटा सेट करने के लिए एल्गोरिथ्म लागू कर सकते हैं (उच्च CPU और स्मृति उपयोग।)।
विशेष रूप से कैसे आप एक सर्वर मंदी बना सकते हैं पर विस्तार करने के लिए: Levenshtein और similar_text: के अंतर्निहित पीएचपी कार्यों तार के बीच "दूरी" का निर्धारण करेगा जोड़ी।
डमी डेटा: (नाटक वे खबर सुर्खियों रहे हैं)
$titles = <<< EOF
Apple
Apples
Orange
Oranges
Banana
EOF;
$titles = explode("\n", $titles);
इस बिंदु पर, $ खिताब सिर्फ तार की एक सरणी होना चाहिए। अब, एक मैट्रिक्स बनाएं और समानता के लिए प्रत्येक अन्य शीर्षक के विरुद्ध प्रत्येक शीर्षक की तुलना करें। दूसरे शब्दों में, 5 शीर्षकों के लिए, आपको 5 x 5 मैट्रिक्स (25 प्रविष्टियां) मिलेंगी, जहां सीपीयू और मेमोरी सिंक हो जाता है।
यही कारण है कि इस विधि (PHP के माध्यम से) हजारों पर लागू नहीं किया जा सकता है प्रविष्टियों का। लेकिन अगर आप चाहते थे:
$matches = array();
foreach($titles as $title) {
$matches[$title] = array();
foreach($titles as $compare_to) {
$matches[$title][$compare_to] = levenshtein($compare_to, $title);
}
asort($matches[$title], SORT_NUMERIC );
}
इस बिंदु पर आपके मूल रूप से "टेक्स्ट दूरी" के साथ एक मैट्रिक्स है। अवधारणा में (वास्तविक डेटा में नहीं) यह नीचे इस तालिका की तरह दिखता है। ध्यान दें कि 0 मानों का एक सेट कैसे है जो तिरछे हो जाते हैं - इसका मतलब है कि मिलान करने वाले लूप में, दो समान शब्द हैं - ठीक है, समान।
Apple Apples Orange Oranges Banana
Apple 0 1 5 6 6
Apples 1 0 6 5 6
Orange 5 6 0 1 5
Oranges 6 5 1 0 5
Banana 6 6 5 5 0
वास्तविक $ से मेल खाता है सरणी प्रकार का इस तरह दिखता है (छोटा):
Array
(
[Apple] => Array
(
[Apple] => 0
[Apples] => 1
[Orange] => 5
[Banana] => 6
[Oranges] => 6
)
[Apples] => Array
(
...
किसी भी तरह, यह आप पर निर्भर करने के लिए (प्रयोगों के द्वारा) का निर्धारण क्या एक अच्छा संख्यात्मक दूरी कटऑफ ज्यादातर मैच हो सकता है है - और फिर इसे लागू करें। अन्यथा, स्फिंक्स-सर्च पर पढ़ें और इसका उपयोग करें - क्योंकि इसमें PHP पुस्तकालय हैं।
ऑरेंज आपको खुशी है कि आपने इसके बारे में पूछा है?
क्या आप वाकई शीर्षक या यूआरएल से मेल नहीं खाते हैं? .. मुझे लेवेनशेटिन फॉर्मूला के साथ बड़ी सफलता मिली है, लेकिन मुझे यकीन है कि यह बड़े डेटा सेट के साथ विफल होना शुरू कर देगा। – Fosco
अब मैं कोशिश कर रहा हूं, लेकिन मुझे लगता है कि यह किसी भी तरह के कर्षण – chris