Saya memiliki indeks solr yang besar, dan saya perhatikan beberapa bidang tidak diperbarui dengan benar (indeksnya dinamis).
Hal ini mengakibatkan beberapa bidang memiliki bidang "id" yang kosong.
Saya telah mencoba kueri ini, tetapi tidak berhasil:
id:''
id:NULL
id:null
id:""
id:
id:['' TO *]
Apakah ada cara untuk mengkueri bidang kosong?
Terima kasih
?q=-id:*
Anda mendapatkanCannot parse '-q:*': '*' or '?' not allowed as first character in WildcardQuery
?q=-id:*
tampaknya berfungsi seperti yang diharapkan. Mungkin kesalahan penguraian terkait dengan masalah ini .Lucene Specification Version: 3.2.0
saya gunakan. Senang mereka menambahkan sintaks di Solr 4.5.1.Satu peringatan! Jika Anda ingin menulis ini melalui ATAU atau DAN Anda tidak dapat menggunakannya dalam formulir ini:
tetapi Anda harus menggunakan
Formulir ini dapat disusun dengan sempurna. Rupanya SOLR akan memperluas formulir pertama ke yang kedua, tetapi hanya jika itu adalah node teratas. Semoga ini menghemat waktu Anda!
sumber
Menurut SolrQuerySyntax , Anda dapat menggunakan
q=-id:[* TO *]
.sumber
Jika Anda memiliki indeks yang besar, Anda harus menggunakan nilai default
dan kemudian menanyakan nilai default ini. Ini jauh lebih efisien daripada q = -id: ["" TO *]
sumber
Anda juga bisa menggunakannya seperti ini.
sumber
Jika Anda menggunakan SolrSharp, itu tidak mendukung pertanyaan negatif.
Anda perlu mengubah QueryParameter.cs (Buat parameter baru)
Dan di kelas QueryParameterCollection.cs, toString () override, terlihat jika parameter Negatif benar
Saat Anda memanggil pembuat parameter, jika nilainya negatif. Ubah propertie secara sederhana
sumber
Anda dapat melakukannya dengan kueri filter q = *: * & fq = -id: *
sumber