Erik, here is some context :
- migration from solr 4.10.4 to 5.4.1.
- we have our own synonym implementation that do not use solr
synonym mechanism: at the time, we needed to manage multi token synonym
and it wasn't covered by the Lucene features. So basically we
- let' say that "playstation portable" is a synonym of
"psp". We identify "psp" and "playstation portable" as <synonymId1>.
- at index time, on every document with "psp" we replace it
by "psp <synonymId1>"
- at query-time:
- By extending SearchHandler, we replace the query
"playstation portable" by "((playstation AND portable) OR <synonymId1>)".
- (1) By extending ExtendedSolrQueryParser, we do
not add synonym ids in PhraseQuery. We need advice for the migration to
Solr 5.4.1
- By extending BooleanQuery, we adjust the
coordination factor. We need advice for the migration to Solr 5.4.1 (see
other question in the mailing list)
Hope it's clearer
Thanks
Gérald
(1)
public class MyPhraseQuery extends PhraseQuery {
private int deltaPosition = 0;
@Override
public void add(Term term, int position) {
String termText = term.text();
if (!termText.matches(Constants.SYNONYM_PIVOT_ID_REGEX)) {
super.add(term, position - deltaPosition);
}else{
deltaPosition++;
}
}
}
On 02/03/2016 03:05 PM, Erik Hatcher wrote:
Gerald - I don’t quite understand, sorry - perhaps best if you could post your
code (or some test version you can work with and share here) so we can see what
exactly you’re trying to do. Maybe there’s other ways to achieve what you
want, maybe with somehow leveraging a StopFilter-like facility to remove phrase
terms. edismax has some stop word (inclusion, rather than exclusion, though)
magic with the pf2 and pf3 and stopwords parameters - maybe worth leveraging
something like how that works or maybe adding some options or pluggability to
the edismax phrase/stopword facility?
Erik
On Feb 3, 2016, at 6:05 AM, Gerald Reinhart <gerald.reinh...@kelkoo.com> wrote:
On 02/02/2016 03:20 PM, Erik Hatcher wrote:
On Feb 2, 2016, at 8:57 AM, Elodie Sannier <elodie.sann...@kelkoo.fr> wrote:
Hello,
We are using solr 4.10.4 and we want to update to 5.4.1.
With solr 4.10.4:
- we extend PhraseQuery with a custom class in order to remove some
terms from phrase queries with phrase slop (update of add(Term term, int
position) method)
- in order to use our implementation, we extend ExtendedSolrQueryParser
with a custom class and we override the method newPhraseQuery but with
solr 5 this method does not exist anymore
How can we do this with solr 5.4.1 ?
You’ll want to override this method, it looks like:
protected Query getFieldQuery(String field, String queryText, int slop)
Hi Erik,
To change the behavior of the PhraseQuery either:
- we change it after the natural cycle. The PhraseQuery is supposed
to be immutable and the setSlop(int s) is deprecated... we don't really
want to do this.
- we override the code that actually build it :
org.apache.solr.search.ExtendedDismaxQParser.getFieldQuery(String field,
String val, int slop) PROTECTED
use getAliasedQuery() PROTECTED
use getQuery() PRIVATE which use new PhraseQuery.Builder()
to create the query...
so not easy to override the behavior: we would need to
overrride/duplicate getAliasedQuery() and getQuery() methods. we don't
really want to do this either.
So we don't really know where to go.
Thanks,
Gerald (I'm working with Elodie on the subject)
Kelkoo SAS
Société par Actions Simplifiée
Au capital de € 4.168.964,30
Siège social : 158 Ter Rue du Temple 75003 Paris
425 093 069 RCS Paris
Ce message et les pièces jointes sont confidentiels et établis à l'attention
exclusive de leurs destinataires. Si vous n'êtes pas le destinataire de ce
message, merci de le détruire et d'en avertir l'expéditeur.
--
Kelkoo
*Gérald Reinhart *Software engineer
*E*gerald.reinh...@kelkoo.com <mailto:steve.con...@kelkoo.com>
*Y!Messenger*gerald.reinhart
*A*Rue des Méridiens 38130 Echirolles
Kelkoo SAS
Société par Actions Simplifiée
Au capital de € 4.168.964,30
Siège social : 158 Ter Rue du Temple 75003 Paris
425 093 069 RCS Paris
Ce message et les pièces jointes sont confidentiels et établis à l'attention
exclusive de leurs destinataires. Si vous n'êtes pas le destinataire de ce
message, merci de le détruire et d'en avertir l'expéditeur.