Saya menggunakan solr dengan ruby ββββon rails. Semuanya berfungsi dengan baik, saya hanya perlu tahu apakah ada kode untuk membersihkan input pengguna, seperti kueri yang dimulai dengan ? atau *
permintaan sanitasi solr
Jawaban (2)
Saya tidak tahu kode apa pun yang melakukan ini, tetapi secara teori hal itu dapat dilakukan dengan melihat mengurai kode di Lucene dan mencari throw new ParseException
(hanya 16 yang cocok!).
Dalam praktiknya, saya pikir Anda lebih baik menangkap pengecualian solr apa pun dalam kode Anda dan menampilkan pesan kueri yang tidak valid atau semacamnya.
EDIT: Berikut adalah beberapa pembersih:
- http://pivotallabs.com/users/zach/blog/articles/937-sanitizing-solr-requests
- http://github.com/jvoorhis/lucene_query
- http://e-mats.org/2010/01/escaping-characters-in-a-solr-query-solr-url/
person
Mauricio Scheffer
schedule
16.07.2009
Jika Anda menggunakan Solarium dengan PHP maka Anda dapat menggunakan metode Solarium_Escape::term()
.
/**
* Escape a term
*
* A term is a single word.
* All characters that have a special meaning in a Solr query are escaped.
*
* If you want to use the input as a phrase please use the {@link phrase()}
* method, because a phrase requires much less escaping.\
*
* @link http://lucene.apache.org/java/docs/queryparsersyntax.html#Escaping%20Special%20Characters
*
* @param string $input
* @return string
*/
static public function term($input)
{
$pattern = '/(\+|-|&&|\|\||!|\(|\)|\{|}|\[|]|\^|"|~|\*|\?|:|\\\)/';
return preg_replace($pattern, '\\\$1', $input);
}
person
crmpicco
schedule
30.09.2013