मुझे जावा-आधारित वेब एप्लिकेशन में उपयोगकर्ताओं के सबमिशन से अपवित्रता को फ़िल्टर करने की आवश्यकता है। क्लाइंट को Scunthorpe Problem और Clbuttic Problem दोनों के बारे में पता है और उसने परिणाम को स्वीकार कर लिया है। कृपया, मैं सेंसरशिप की कमी के गुणों पर बहस नहीं करना चाहता।
डेटा के दो बिट्स हैं:
- उपयोगकर्ता का सबमिशन, जिसमें संभावित रूप से 500 शब्द या तो हो सकते हैं;
- एकल-स्तंभ डेटाबेस तालिका जिसमें शब्द अस्वीकृत हैं। इस तालिका में कई हजारों रिकॉर्ड हो सकते हैं।
वर्तमान समाधान मुझे गलत लगता है:
- संपूर्ण तालिका को एक सिंगलटन में स्टार्टअप पर स्थिर स्ट्रिंग [] में लोड किया जाता है (इस प्रकार मेमोरी में रहता है)।
- प्रत्येक उपयोगकर्ता सबमिशन के लिए हम एरे के माध्यम से लूप करते हैं और एक .indexOf () यह देखने के लिए करते हैं कि स्ट्रिंग [] में कोई भी दिया गया शब्द सबमिशन में दिखाई देता है या नहीं।
- यदि ऐसा प्रतीत होता है, तो हम% $ # @% - शैली के पात्रों से प्रतिस्थापित करते हैं। यह उपयोगकर्ता सबमिशन को टोकन करके, पूरे उपयोगकर्ता सबमिशन को टोकन (फिर से) के रूप में पाकर, और पाए गए शब्द के प्रत्येक उदाहरण को प्रतिस्थापित करके किया जाता है।
इस समाधान में प्रतिभा हो सकती है, लेकिन मुझे संदेह है। और कुछ समय के लिए इस पर नज़र रखने के बाद मैं अपने तरीके से इसे पा नहीं सकता।
प्रश्न यह है कि ऐसा कौन सा समाधान है जो अच्छा प्रदर्शन देगा और उम्मीद है कि भविष्य के डेवलपर्स के लिए यथोचित रूप से समझदार बने रहूंगा क्योंकि मैंने कभी नहीं सुना है कि कुछ अस्पष्ट शब्द को फ़िल्टर करने में विफल रहने के लिए निकाल दिया जाए?