2012-01-17 13 views
5

Sto lavorando con Solr e mi piacerebbe sapere se è possibile avere una clausola LIKE nella query. Ad esempio, voglio conoscere tutte le organizzazioni con "New York" nel titolo. In SQL, questo sarebbe scritto come Nome LIKE 'New York%'.Query Solr con clausola LIKE

La mia domanda: come si scrive una query LIKE in Solr?

Sto usando la libreria SolrNet, se questo fa la differenza.

+0

è possibile controllare http://stackoverflow.com/questions/3088401/substring-matches-within-solr – naresh

risposta

6

È sufficiente cercare "New York", ma prima è necessario configurare correttamente l'analizzatore del proprio campo. Ad esempio potresti voler iniziare con un tipo di campo come text_general come definito nello default Solr schema. Questo tipo di campo verrà tokenize su spazi vuoti e altri separatori di parole comuni, quindi applicherà un filtro di stopword, quindi in minuscolo i termini per rendere le ricerche senza distinzione tra maiuscole e minuscole.

Ulteriori informazioni su analyzers in the Solr wiki.

+0

ho copia di testo text_general da default collection1 schema.xml al mio progetto ma la ricerca non ha funzionato. sto cercando di cercare "hot" nella stringa "Fa caldo a Dubai?" –

+0

se lo analizzo in Solr admin, funziona lì, ma se cerco in Admin> Query non ha –

6

Se si utilizza solr 3.1 o successivo, dare un'occhiata allo Extended DisMax Query Parser, che supporta le query con caratteri jolly. È possibile abilitarlo utilizzando <str name="defType">edismax</str> nella configurazione del gestore richieste.

Quindi è possibile utilizzare una query come title:New York* con lo stesso comportamento di una query con clausola simile. La principale differenza tra la mia risposta e quella accettata è che puoi anche cercare frammenti di parole usando i caratteri jolly. Ad esempio, New Yorkers corrisponderebbe in questo caso. Sfortunatamente potresti avere problemi con le query che fanno distinzione tra maiuscole e minuscole, anche se stai usando uno LowerCaseFilterFactory. Dai uno sguardo allo here per saperne di più. La maggior parte di questi problemi verrà risolta con la versione 3.6 solr dal momento che il problema SOLR-2438 è stato risolto.