Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Konfigurasikan Lucene.Net dengan SQL Server

Ya, saya telah menggunakannya untuk persis seperti yang Anda gambarkan. Kami memiliki dua layanan - satu untuk membaca, dan satu untuk menulis, tetapi hanya karena kami memiliki banyak pembaca. Saya yakin kita bisa melakukannya hanya dengan satu layanan (penulis) dan menyematkan pembaca di aplikasi dan layanan web.

Saya telah menggunakan lucene.net sebagai pengindeks basis data umum, jadi yang saya dapatkan kembali pada dasarnya adalah id DB (untuk mengindeks pesan email), dan saya juga menggunakannya untuk mendapatkan kembali info yang cukup untuk mengisi hasil pencarian atau semacamnya tanpa menyentuh basis data. Ini bekerja dengan baik dalam kedua kasus, meskipun SQL bisa menjadi sedikit lambat, karena Anda harus mendapatkan ID, pilih ID, dll. Kami menyiasatinya dengan membuat tabel temp (hanya dengan baris ID di dalamnya) dan penyisipan massal dari file (yang merupakan output dari lucene) kemudian bergabung ke tabel pesan. Jauh lebih cepat.

Lucene tidak sempurna, dan Anda harus berpikir sedikit di luar kotak basis data relasional, karena BENAR-BENAR bukan satu, tetapi sangat sangat baik dalam apa yang dilakukannya. Layak untuk dilihat, dan, saya diberitahu, tidak memiliki masalah "oops, maaf, Anda perlu membangun kembali indeks Anda" seperti yang dilakukan FTI MS SQL.

BTW, kami berurusan dengan 20-50 juta email (dan sekitar 1 juta lampiran unik), menurut saya, total sekitar 20GB indeks lucene, dan 250+GB database SQL + lampiran.

Performanya fantastis, untuk sedikitnya - pastikan Anda memikirkan, dan mengubah, faktor gabungan Anda (ketika menggabungkan segmen indeks). Tidak ada masalah dalam memiliki lebih dari satu segmen, tetapi mungkin ada masalah BESAR jika Anda mencoba menggabungkan dua segmen yang masing-masing memiliki 1 juta item, dan Anda memiliki utas pengamat yang menghentikan proses jika terlalu lama... .. (ya, itu menendang pantat kami untuk sementara waktu). Jadi, pertahankan jumlah maksimum dokumen per hal RENDAH (yaitu, jangan setel ke maksimum seperti yang kami lakukan!)

EDIT Corey Trager mendokumentasikan cara menggunakan Lucene.NET di BugTracker.NET di sini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SET versus SELECT saat menetapkan variabel?

  2. Bagaimana saya bisa MEMILIH beberapa kolom dalam CASE WHEN di SQL Server?

  3. Batasan tabel silang MS SQL Server

  4. Cara Menginstal SQL Server di Mac dengan VirtualBox

  5. SELECT max(x) mengembalikan nol; bagaimana saya bisa membuatnya kembali 0?