Lucilla هي مكتبة البحث النصية الكاملة في الذاكرة لـ Kotlin.
يسمح لك بإنشاء فهرس بحث كامل عن النص للبيانات التي لا تحتاج إلى استمرار في قاعدة بيانات. يمكنك تشغيل استفسارات البحث مقابل الفهرس للعثور على المستندات المطابقة بسرعة.
import com.haroldadmin.lucilla.core.*
data class Book (
@Id
val id : Int ,
val title : String ,
val summary : String ,
)
val index = useFts(getBooks())
index.search( " Martian " ).map { searchResult ->
val bookId = searchResult.documentId
val book = getBook(bookId)
// Show search result to the user
}لوسيلا في التطوير النشط. إنه نموذج أولي للمرحلة المبكرة ، وليس مناسبًا لاستخدام الإنتاج حتى الآن.
على الرغم من أن Lucilla قد غطت في معظم الميزات الأساسية ، إلا أن دعم بعض الميزات المتقدمة مفقودة (ولكن مخطط لها):
لاستخدام إمكانيات Lucilla's FTS ، يجب عليك أولاً تصميم بياناتك كفصل.
نوصي باستخدام فئات البيانات لهذا الغرض ، ولكن يجب أن يعمل أي شيء طالما يستوفي المتطلبات التالية:
@Id يمكن تحليله باعتباره IntString S import com.haroldadmin.lucilla.core.Id
data class Book (
@Id
val id : Int ,
val title : String ,
val summary : String ,
) إذا كنت لا تريد أن فهرسة Lucilla بعض حقول المستند الخاصة بك ، فقم بتعليقها باستخدام @Ignore .
import com.haroldadmin.lucilla.core.Id
import com.haroldadmin.lucilla.core.Ignore
data class Book (
@Id
val id : Int ,
val title : String ,
val summary : String ,
@Ignore
val publisher : String ,
)قم بإنشاء فهرس FTS وأضف بياناتك إليه:
val index = useFts< Book >()
getBooks().forEach { index.add(it) }
// You can also pass your seed data directly
val books = getBooks()
val index = useFts< Book >(books)تعد إضافة مستندات إلى الفهرس ، أو إنشاء الفهرس ببيانات البذور عملية باهظة الثمن حسب حجم كل مستند. من الأفضل إجراء هذه العملية على موضوع خلفية أو coroutine.
أرسل استفساراتك إلى الفهرس للحصول على نتائج البحث التي تم طلبها حسب الأهمية.
val searchResults = index.search(query)
val books = searchResults.map { r -> r.documentId }.map { id -> getBook(id) }
showResults(books)تقوم Lucilla بتشغيل كل استعلام بحث من خلال خط أنابيب معالجة النص لاستخراج الرموز القابلة للبحث منه. قد لا يعكس الرموز استعلام البحث بالضبط. للعثور على الرمز المميز لاستعلام البحث الخاص بك المتطابق مع نتيجة بحث معينة ، استخدم خاصية "matchterm" في نتيجة بحث.
أضف مستودع jitpack إلى قائمة المستودعات:
// Project level build.gradle file
allprojects {
repositories {
maven { url ' https://jitpack.io ' }
}
}ثم أضف التبعية في ملف Gradle:
// Module build.gradle file
dependencies {
implementation " com.github.haroldadmin.lucilla:core:(latest-version) "
}لوسيلا في تطور نشط ولا تعد باستقرار API. توقع أن تخضع المكتبة لتغييرات كبيرة قبل أن تصل إلى حالة مستقرة.
نحن نشجع المجتمع على المساهمة في الميزات والإبلاغ عن الأخطاء.
اسم "Lucilla" مستوحى من اسم Sebastian Vettel's 2020 Ferrari. كما أنه يبدو مشابهًا لـ Lucene (من Apache Lucene) ، وهو إطار البحث عن النص الكامل للصناعة.
ينفذ تطبيق Lucilla من A JavaScript Library Minisearch.
MIT License
Copyright (c) 2022 Kshitij Chauhan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.