[ https://issues.apache.org/jira/browse/SOLR-2719?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Luca Cavanna updated SOLR-2719: ------------------------------- Attachment: SOLR-2719.patch My patch isn't a fix but just a starting point: it adds a ReturnFieldsTest class which tests some of the new fl features. Some tests are of course failing. The biggest problem is the hyphen within the field name, which I guess is widely used. This could be corrected as suggested by Nik, but we have problems with other characters, even if less used within field names. Solr doesn't validate field names, but now a lot of potential field names can't actually be used within the fl parameter, or even worse they break the query. Some of my tests method are intentionally weird, like the ~idtest or id$test, but those field names are both allowed by Solr. I'm afraid we might have the same problem with sorting since the QueryParsing#parseSort uses the same StrParser#getId method. The main rule to identify the end of a field name seems to be the following: {code} if (!Character.isJavaIdentifierPart(ch) && ch != '.') break; {code} In my opinion, the point here is not just correct the hyphen regression. I think we should introduce consistency between fl and decide which characters Solr accepts within a field name. What are your thoughts guys? > REGRESSION ReturnFields incorrect parse fields with hyphen - breaks existing > "fl=my-field-name" type usecases > ------------------------------------------------------------------------------------------------------------- > > Key: SOLR-2719 > URL: https://issues.apache.org/jira/browse/SOLR-2719 > Project: Solr > Issue Type: Bug > Components: search > Affects Versions: 4.0 > Reporter: Nik V. Babichev > Priority: Blocker > Labels: field, fl, query, queryparser > Fix For: 4.0 > > Attachments: SOLR-2719.patch > > > fl=my-hyphen-field in query params parsed as "my" instead of > "my-hyphen-field". > OAS.search.ReturnFields use method getId() from OAS.search.QueryParsing > in which check chars "if (!Character.isJavaIdentifierPart(ch) && ch != '.')" > Hyphen is not JavaIdentifierPart and this check break when first "-" is found. > This problem solve by passing '-' to check: > if (!Character.isJavaIdentifierPart(ch) && ch != '.' && ch != '-') break; > But I don't know how it can affect on whole project. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org