permintaan sanitasi solr

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 *


person Ori    schedule 15.07.2009    source sumber


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:

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