كيف أقوم بتنفيذ وظيفة البحث في موقع الويب؟[مغلق]

StackOverflow https://stackoverflow.com/questions/34314

  •  09-06-2019
  •  | 
  •  

سؤال

أرغب في تنفيذ وظيفة البحث لموقع ويب (بافتراض أنه مشابه لـ SO).لا أريد استخدام بحث Google لأشياء من هذا القبيل.

سؤالي هو:

كيف يمكنني تنفيذ هذا؟

هناك طريقتان أعرفهما:

  1. البحث في جميع قواعد البيانات الموجودة في التطبيق عندما يقوم المستخدم بتقديم استعلامه.
  2. قم بفهرسة جميع البيانات الموجودة لدي وقم بتخزينها في مكان آخر والاستعلام من هناك (مثل ما يفعله Google).

يمكن لأحد أن يقول لي أي طريق للذهاب؟ما هي إيجابيات وسلبيات؟

أفضل، هل هناك أي طرق أفضل للقيام بذلك؟

هل كانت مفيدة؟

المحلول

استخدم لوسين
http://lucene.Apache.org/java/docs/

Apache Lucene عبارة عن مكتبة محركات بحث نصية عالية الأداء ومتكاملة الميزات ومكتوبة بالكامل بلغة Java.إنها تقنية مناسبة تقريبًا لأي تطبيق يتطلب البحث عن النص الكامل، وخاصة عبر الأنظمة الأساسية.

وهي متوفرة في جافا و.net.وهو متوفر أيضًا بلغة php على شكل وحدة إطارية zend.

يقوم برنامج Lucene بما تريده (فهرسة العناصر التي تم البحث عنها)، ويجب عليك تتبع فهرس لوسين ولكنه أفضل بكثير من إجراء بحث في قاعدة البيانات من حيث الأداء.راجع للشغل، لذلك يتم تشغيل البحث بواسطة لوسين.:د

نصائح أخرى

يعتمد ذلك على مدى شمولية موقع الويب الخاص بك والمبلغ الذي تريد القيام به بنفسك.

إذا كنت تقوم بتشغيل أ موقع صغير دون المزيد من الإمكانيات لإضافة بحث مخصص، دع Google يقوم بالعمل (ربما أضف بحثًا مخصصًا). خريطة الموقع) واستخدم جوجل بحث مخصص.

إذا قمت بتشغيل أ موقع متوسط باستخدام محرك SQL، استخدم ميزات البحث الخاصة بمحرك SQL الخاص بك.

إذا قمت بتشغيل بعض كومة برامج أثقل مثل J2EE أو .Net الاستخدام لوسين, ، محرك بحث رائع وقوي أو استنساخه على شبكة الإنترنت lucene.Net

أذا أردت استخلص بحثك من طلبك وتكون قادرًا على الاستعلام عنه بطريقة محايدة للغة باستخدام XML/HTTP وJSON APIs، قم بإلقاء نظرة على solr.يقوم Solr بتشغيل برنامج lucene في الخلفية، ولكنه يضيف إليه واجهة ويب رائعة.

قد ترغب في إلقاء نظرة على xapian و ال أوميغا نهاية المقدمة.إنها في الأساس مجموعة أدوات يمكنك من خلالها إنشاء وظيفة البحث.

أفضل طريقة للتعامل مع هذا الأمر تعتمد على كيفية إنشاء صفحاتك.

إذا كانت تتألف في كثير من الأحيان من الكثير من السجلات المختلفة (كما أتخيل صفحات تجاوز سعة المكدس)، فمن المرجح أن يعطي أسلوب الفهرسة نتائج أفضل ما لم تبذل الكثير من العمل في إعادة بناء الصفحات بشكل فعال على جانب قاعدة البيانات.

العيب الذي تواجهه في أسلوب الفهرسة هو الوقت المستغرق.توجد حلول بديلة (مثل عناصر خريطة موقع Google)، ولكنها أيضًا معقدة بحيث يصعب تنفيذها بشكل صحيح.

إذا اتبعت مسار قاعدة البيانات، فاعلم أيضًا أن أنظمة محركات البحث الحديثة تعمل بشكل أفضل بكثير إذا كانت لديها بيانات مرتبطة بالمعالجة، لذا فإن العثور على نظام يمكنه فهم الروابط بين "الصفحات" في قاعدة البيانات سيكون له تأثير إيجابي.

إذا كنت تستخدم منصة Microsoft، فيمكنك استخدام خدمة الفهرسة.يتكامل هذا بسهولة مع مواقع IIS.

يحتوي على جميع الميزات الأساسية مثل البحث عن النص الكامل، والتصنيف، واستبعاد أنواع معينة من الملفات وتضمينها، ويمكنك إضافة معلومات التعريف الخاصة بك أيضًا عبر العلامات الوصفية في صفحات html.

ابحث في جوجل وستجد الكثير!

هذا متعامد إلى حد ما مع سؤالك، لكنني أوصي بشدة بفكرة البحث RESTful.أي، لإجراء بحث لم يتم إجراؤه من قبل، يقوم موقع الويب بنشر استعلام إلى /searches/.لإعادة إجراء البحث، يقوم موقع الويب بـ GETs /searches/{some id}

هناك بعض الوثائق الجيدة التي يمكن العثور عليها بخصوص هذا، على سبيل المثال هنا.

(ومع ذلك، فأنا أحب الفهرسة حيثما أمكن ذلك، على الرغم من أنها عملية تحسين، وبالتالي يمكن أن تكون سابقة لأوانها.)

إذا كان تطبيقك يستخدم مكدس Java EE وكنت تستخدمه بيات شتوى يمكنك استخدام ال إطار البوصلة الحفاظ على فهرس قابل للبحث في قاعدة البيانات الخاصة بك.يستخدم إطار البوصلة لوسين تحت الغطاء.

المشكلة الوحيدة هي أنه لا يمكنك تكرار فهرس البحث الخاص بك.لذلك تحتاج إلى استخدام قاعدة بيانات مجمعة للاحتفاظ بجداول الفهرس أو استخدام آليات تخزين الفهرس الأحدث المستندة إلى الشبكة والتي تمت إضافتها إلى Compass Framework 2.x.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top