سؤال

أقوم بإنشاء واجهة برمجة تطبيقات "البحث عن الكتب" باستخدام Lucene.أحتاج إلى فهرسة حقول اسم الكتاب والمؤلف وفئة الكتاب في فهرس Lucene.

يمكن أن يندرج الكتاب الواحد تحت عدة فئات مختلفة من الكتب... على سبيل المثال:

اسم الكتاب 1 - الخيال، الفكاهة، الفلسفة.اسم الكتاب 1 - خيال، علم.اسم الكتاب 1 - الفكاهة والأعمال.BookName4-f-humour وما إلى ذلك .....

يجب أن يكون المستخدم قادرًا على البحث في جميع الكتب ضمن فئة معينة مثل "Homor".

في ظل هذا الموقف، كيف يمكنني فهرسة الحقول أعلاه وإنشاء الاستعلام بلغة لوسين؟

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

المحلول

يمكن أن يكون لديك حقل لمستند Lucene يحدث عدة مرات.قم بإنشاء المستند، وأضف قيم الاسم والمؤلف، ثم افعل الشيء نفسه لكل فئة

  • إنشاء مستند لوسين جديد
  • إضافة حقل الاسم والقيمة
  • إضافة حقل المؤلف والقيمة
  • لكل فئة:
    • إضافة حقل الفئة والقيمة
  • إضافة مستند إلى الفهرس

عندما تبحث في الفهرس عن فئة ما، فسوف يُرجع جميع المستندات التي تحتوي على حقل فئة بالقيمة التي تبحث عنها.يجب أن تكون الفئة حقل "الكلمة الرئيسية".

لقد كتبته باللغة الإنجليزية لأن الكود المحدد يختلف قليلاً لكل إصدار لوسين.

نصائح أخرى

ويمكنك إنشاء "فئة" بسيط المجال، حيث يمكنك إدراج جميع categrories لكتاب مفصولة بمسافات.

وبعد ذلك يمكنك البحث شيئا مثل:

stock market AND category:(+"business")

وأو إذا كنت تريد البحث في أكثر من فئة واحدة

stock market AND category:(+"business" +"philosophy")

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

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

في المؤسسة العامة، وكنت ببساطة تحديد الحقول التي تريد مؤشر شيئا من هذا القبيل في schema.xml:

<field name="book_id" type="string" indexed="true" stored="true" required="true" multiValued='false'/>
<field name="book_name" type="text" indexed="true" stored="true" required="true" multiValued='false' />
<field name="book_authors" type="text" indexed="true" stored="true" required="true" multiValued='true' />
<field name="book_categories" type="textTight" indexed="true" stored="true" required="true" multiValued='true' />

لاحظ أن السمة multiValued='true' يتيح لك فعالية تمرير صفيف أو قائمة في هذا المجال، الذي يحصل على تقسيم وفهرستها بشكل جيد من قبل المؤسسة العامة.

وبمجرد الانتهاء من ذلك، بدء المؤسسة العامة، ويمكنك أن تسأل الأسئلة مثل "book_authors:Hemingway" أو "book_categories:Romance book_categories:Mills".

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

وهناك الكثير من كبيرة <لأ href = "HTTP: // يكي .apache.org / المؤسسة العامة / "يختلط =" نوفولو noreferrer "> وثائق على موقعه على الانترنت للحصول على انك بدأته.

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