You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Steve Rowe (JIRA)" <ji...@apache.org> on 2017/03/18 03:29:41 UTC
[jira] [Updated] (SOLR-10218) The Schema API commands
"add-field-type" and "replace-field-type" improperly specify
SimilarityFactory params
[ https://issues.apache.org/jira/browse/SOLR-10218?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steve Rowe updated SOLR-10218:
------------------------------
Summary: The Schema API commands "add-field-type" and "replace-field-type" improperly specify SimilarityFactory params (was: The Schema API "replace-field-type" does not generate the SolrParameters for a SimilarityFactory correctly)
> The Schema API commands "add-field-type" and "replace-field-type" improperly specify SimilarityFactory params
> -------------------------------------------------------------------------------------------------------------
>
> Key: SOLR-10218
> URL: https://issues.apache.org/jira/browse/SOLR-10218
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: Schema and Analysis
> Affects Versions: 6.4.1
> Reporter: Benjamin Deininger
> Assignee: Steve Rowe
> Priority: Minor
> Attachments: SOLR-10218.patch
>
>
> When sending a JSON POST to the Schema API to replace a field type, the following JSON does not pass the SolrParameters properly to the BM25SimilarityFactory.
> {code:javascript}
> {"replace-field-type":{"name":"tint","class":"solr.TrieIntField","positionIncrementGap":"0","precisionStep":"8","similarity":{"class":"solr.BM25SimilarityFactory","k1":1.25,"b":0.75}}}
> {code}
> The `appendAttrs` function in the FieldTypeXmlAdapter parses k1 and b into attributes instead of children. https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/rest/schema/FieldTypeXmlAdapter.java#L155
> {code:xml}
> <similarity b="0.75" class="org.apache.lucene.search.similarities.BM25Similarity" k1="1.25"/>
> {code}
> Based on the XML examples for similarity, this should actually be the following :
> {code:xml}
> <similarity class="org.apache.lucene.search.similarities.BM25Similarity">
> <float name=“k1”>0.1</float>
> <float name=“b”>0.1</float>
> </similarity>
> {code}
> The similarities block in JSON should be handled differently so that the XML is generated appropriately.
> {code:java}
> protected static Element appendSimilarityAttrs(Document doc, Element elm, Map<String,?> json) {
> String clazz = (String) json.get("class");
> elm.setAttribute("class", clazz);
> json.remove("class");
> for (Map.Entry<String,?> entry : json.entrySet()) {
> Object val = entry.getValue();
> if (val != null && !(val instanceof Map)) {
> Element element = doc.createElement(val.getClass().getSimpleName().toLowerCase());
> element.setAttribute("name", entry.getKey());
> element.setTextContent(entry.getValue().toString());
> elm.appendChild(element);
> }
> }
> return elm;
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org