You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Peter Thygesen <th...@infopaq.dk> on 2008/01/23 11:42:14 UTC

Getting SolrSharp to work, Part 2

I wrote a small client in .Net which query Solr and dumps the result on
screen.. fantastic low-tech.. ;) 

However I ran into new SolrSharp problems. My schema allows a particular
field to be multiValued, but if it only has one value, it will cause
SolrSharp fail in line 88 of Class: IndexFiledAttribute. 

My SearchRecord property is an array (List) and line 88 tries to set my
property as if it was a string. The code should be corrected by checking
if the property is an array and not whether it has 1 value or more. 
E.g. change line 85 to 085> if(!this.PropertyInfo.PropertyType.IsArray) 

Original code (from class IndexFiledAttribute):
082> public void SetValue(SearchRecord searchRecord)
083> {
084>   XmlNodeList xnlvalues =
searchRecord.XNodeRecord.SelectNodes(this.XnodeExpression);
085>   if (xnlvalues.Count == 1)   //single value
086>   {
087>     XmlNode xnodevalue = xnlvalues[0];
088>     this.PropertyInfo.SetValue(searchRecord,
Convert.ChangeType(xnodevalue.InnerText, this.PropertyInfo.PropertyType)
, null);
089>   }
090>   else if (xnlvalues.Count > 1)   //array
091>   {
092>     Type basetype =
this.PropertyInfo.PropertyType.GetElementType();
093>     Array valueArray = Array.CreateInstance(basetype,
xnlvalues.Count);
094>     for (int i = 0; i < xnlvalues.Count; i++)
095>     {
096>
valueArray.SetValue(Convert.ChangeType(xnlvalues[i].InnerText,
basetype), i);
097>     }
098>     this.PropertyInfo.SetValue(searchRecord, valueArray, null);
099>   }
100> }

My code (replace):
085>    if(!this.PropertyInfo.PropertyType.IsArray) // single value
090>    else // array

Cheers, 
Peter Thygesen

-- hope to see you all at ApacheCon in Amsterdam :)



Re: Getting SolrSharp to work, Part 2

Posted by Chris Hostetter <ho...@fucit.org>.
: Great, thanks Peter.  And yes, I think it would be good to concentrate the
: conversation over on codeplex.  I know the Solr team has no problem with
: solrsharp conversations here on the solr mailing list, but the conversation
: is highly focused on the server.  Putting the solrsharp conversation on
: codeplex would keep the messages from drowning on this list.

"no problem with solrsharp conversations" is an understatement .. users
should feel free to discuss any and all issues relating to using Solr on 
the solr-user list.

That said: if there are client (or plugin) projects that have 
non-apache "homes" and those homes have their own discussion / issue 
tracking systems then by all means use those as appropriate.

"Overwellming volume on the solr-user list because of all the people 
talking about the the SolrSharp client" is hte kind of problem i'd love to 
have :)


-Hoss


Re: Getting SolrSharp to work, Part 2

Posted by Jeff Rodenburg <je...@gmail.com>.
Great, thanks Peter.  And yes, I think it would be good to concentrate the
conversation over on codeplex.  I know the Solr team has no problem with
solrsharp conversations here on the solr mailing list, but the conversation
is highly focused on the server.  Putting the solrsharp conversation on
codeplex would keep the messages from drowning on this list.

I'll check out the patch when I get a chance, thanks for the contribution.
Hope things are working better for you now.  :-/

-- j

On Jan 25, 2008 4:53 AM, Peter Thygesen <th...@infopaq.dk> wrote:

> Ups. Forgot to tell that the patch was uploaded on CodePlex
> http://www.codeplex.com/solrsharp/SourceControl/PatchList.aspx
>
> \peter
>
>
> -----Original Message-----
> From: Peter Thygesen
> Sent: 25. januar 2008 13:17
> To: solr-user@lucene.apache.org
> Subject: RE: Getting SolrSharp to work, Part 2
>
> This patch covers the issues I wrote about in my previous mails "How to
> get SolrSharp to work" and "How to get SolrSharp to work, part 2"
>
> By the way should I post on this thread, or on CodePlex. When the topic
> is "SolrSharp"? I don't mind adding a few more comments to the
> discussion I already started on CodePlex.
>
> \peter
>
> -----Original Message-----
> From: Jeff Rodenburg [mailto:jeff.rodenburg@gmail.com]
> Sent: 24. januar 2008 20:59
> To: solr-user@lucene.apache.org
> Subject: Re: Getting SolrSharp to work, Part 2
>
> Hey Peter - if you could submit your changes as an svn patch, we could
> apply
> the update much faster.
>
> thanks,
> jeff
>
>
>
> On Jan 23, 2008 2:42 AM, Peter Thygesen <th...@infopaq.dk> wrote:
>
> > I wrote a small client in .Net which query Solr and dumps the result
> on
> > screen.. fantastic low-tech.. ;)
> >
> > However I ran into new SolrSharp problems. My schema allows a
> particular
> > field to be multiValued, but if it only has one value, it will cause
> > SolrSharp fail in line 88 of Class: IndexFiledAttribute.
> >
> > My SearchRecord property is an array (List) and line 88 tries to set
> my
> > property as if it was a string. The code should be corrected by
> checking
> > if the property is an array and not whether it has 1 value or more.
> > E.g. change line 85 to 085>
> if(!this.PropertyInfo.PropertyType.IsArray)
> >
> > Original code (from class IndexFiledAttribute):
> > 082> public void SetValue(SearchRecord searchRecord)
> > 083> {
> > 084>   XmlNodeList xnlvalues =
> > searchRecord.XNodeRecord.SelectNodes(this.XnodeExpression);
> > 085>   if (xnlvalues.Count == 1)   //single value
> > 086>   {
> > 087>     XmlNode xnodevalue = xnlvalues[0];
> > 088>     this.PropertyInfo.SetValue(searchRecord,
> > Convert.ChangeType(xnodevalue.InnerText,
> this.PropertyInfo.PropertyType)
> > , null);
> > 089>   }
> > 090>   else if (xnlvalues.Count > 1)   //array
> > 091>   {
> > 092>     Type basetype =
> > this.PropertyInfo.PropertyType.GetElementType();
> > 093>     Array valueArray = Array.CreateInstance(basetype,
> > xnlvalues.Count);
> > 094>     for (int i = 0; i < xnlvalues.Count; i++)
> > 095>     {
> > 096>
> > valueArray.SetValue(Convert.ChangeType(xnlvalues[i].InnerText,
> > basetype), i);
> > 097>     }
> > 098>     this.PropertyInfo.SetValue(searchRecord, valueArray, null);
> > 099>   }
> > 100> }
> >
> > My code (replace):
> > 085>    if(!this.PropertyInfo.PropertyType.IsArray) // single value
> > 090>    else // array
> >
> > Cheers,
> > Peter Thygesen
> >
> > -- hope to see you all at ApacheCon in Amsterdam :)
> >
> >
> >
>
>
>
>
>

RE: Getting SolrSharp to work, Part 2

Posted by Peter Thygesen <th...@infopaq.dk>.
Ups. Forgot to tell that the patch was uploaded on CodePlex
http://www.codeplex.com/solrsharp/SourceControl/PatchList.aspx

\peter


-----Original Message-----
From: Peter Thygesen 
Sent: 25. januar 2008 13:17
To: solr-user@lucene.apache.org
Subject: RE: Getting SolrSharp to work, Part 2

This patch covers the issues I wrote about in my previous mails "How to
get SolrSharp to work" and "How to get SolrSharp to work, part 2" 

By the way should I post on this thread, or on CodePlex. When the topic
is "SolrSharp"? I don't mind adding a few more comments to the
discussion I already started on CodePlex.

\peter

-----Original Message-----
From: Jeff Rodenburg [mailto:jeff.rodenburg@gmail.com] 
Sent: 24. januar 2008 20:59
To: solr-user@lucene.apache.org
Subject: Re: Getting SolrSharp to work, Part 2

Hey Peter - if you could submit your changes as an svn patch, we could
apply
the update much faster.

thanks,
jeff



On Jan 23, 2008 2:42 AM, Peter Thygesen <th...@infopaq.dk> wrote:

> I wrote a small client in .Net which query Solr and dumps the result
on
> screen.. fantastic low-tech.. ;)
>
> However I ran into new SolrSharp problems. My schema allows a
particular
> field to be multiValued, but if it only has one value, it will cause
> SolrSharp fail in line 88 of Class: IndexFiledAttribute.
>
> My SearchRecord property is an array (List) and line 88 tries to set
my
> property as if it was a string. The code should be corrected by
checking
> if the property is an array and not whether it has 1 value or more.
> E.g. change line 85 to 085>
if(!this.PropertyInfo.PropertyType.IsArray)
>
> Original code (from class IndexFiledAttribute):
> 082> public void SetValue(SearchRecord searchRecord)
> 083> {
> 084>   XmlNodeList xnlvalues =
> searchRecord.XNodeRecord.SelectNodes(this.XnodeExpression);
> 085>   if (xnlvalues.Count == 1)   //single value
> 086>   {
> 087>     XmlNode xnodevalue = xnlvalues[0];
> 088>     this.PropertyInfo.SetValue(searchRecord,
> Convert.ChangeType(xnodevalue.InnerText,
this.PropertyInfo.PropertyType)
> , null);
> 089>   }
> 090>   else if (xnlvalues.Count > 1)   //array
> 091>   {
> 092>     Type basetype =
> this.PropertyInfo.PropertyType.GetElementType();
> 093>     Array valueArray = Array.CreateInstance(basetype,
> xnlvalues.Count);
> 094>     for (int i = 0; i < xnlvalues.Count; i++)
> 095>     {
> 096>
> valueArray.SetValue(Convert.ChangeType(xnlvalues[i].InnerText,
> basetype), i);
> 097>     }
> 098>     this.PropertyInfo.SetValue(searchRecord, valueArray, null);
> 099>   }
> 100> }
>
> My code (replace):
> 085>    if(!this.PropertyInfo.PropertyType.IsArray) // single value
> 090>    else // array
>
> Cheers,
> Peter Thygesen
>
> -- hope to see you all at ApacheCon in Amsterdam :)
>
>
>





RE: Getting SolrSharp to work, Part 2

Posted by Peter Thygesen <th...@infopaq.dk>.
This patch covers the issues I wrote about in my previous mails "How to
get SolrSharp to work" and "How to get SolrSharp to work, part 2" 

By the way should I post on this thread, or on CodePlex. When the topic
is "SolrSharp"? I don't mind adding a few more comments to the
discussion I already started on CodePlex.

\peter

-----Original Message-----
From: Jeff Rodenburg [mailto:jeff.rodenburg@gmail.com] 
Sent: 24. januar 2008 20:59
To: solr-user@lucene.apache.org
Subject: Re: Getting SolrSharp to work, Part 2

Hey Peter - if you could submit your changes as an svn patch, we could
apply
the update much faster.

thanks,
jeff



On Jan 23, 2008 2:42 AM, Peter Thygesen <th...@infopaq.dk> wrote:

> I wrote a small client in .Net which query Solr and dumps the result
on
> screen.. fantastic low-tech.. ;)
>
> However I ran into new SolrSharp problems. My schema allows a
particular
> field to be multiValued, but if it only has one value, it will cause
> SolrSharp fail in line 88 of Class: IndexFiledAttribute.
>
> My SearchRecord property is an array (List) and line 88 tries to set
my
> property as if it was a string. The code should be corrected by
checking
> if the property is an array and not whether it has 1 value or more.
> E.g. change line 85 to 085>
if(!this.PropertyInfo.PropertyType.IsArray)
>
> Original code (from class IndexFiledAttribute):
> 082> public void SetValue(SearchRecord searchRecord)
> 083> {
> 084>   XmlNodeList xnlvalues =
> searchRecord.XNodeRecord.SelectNodes(this.XnodeExpression);
> 085>   if (xnlvalues.Count == 1)   //single value
> 086>   {
> 087>     XmlNode xnodevalue = xnlvalues[0];
> 088>     this.PropertyInfo.SetValue(searchRecord,
> Convert.ChangeType(xnodevalue.InnerText,
this.PropertyInfo.PropertyType)
> , null);
> 089>   }
> 090>   else if (xnlvalues.Count > 1)   //array
> 091>   {
> 092>     Type basetype =
> this.PropertyInfo.PropertyType.GetElementType();
> 093>     Array valueArray = Array.CreateInstance(basetype,
> xnlvalues.Count);
> 094>     for (int i = 0; i < xnlvalues.Count; i++)
> 095>     {
> 096>
> valueArray.SetValue(Convert.ChangeType(xnlvalues[i].InnerText,
> basetype), i);
> 097>     }
> 098>     this.PropertyInfo.SetValue(searchRecord, valueArray, null);
> 099>   }
> 100> }
>
> My code (replace):
> 085>    if(!this.PropertyInfo.PropertyType.IsArray) // single value
> 090>    else // array
>
> Cheers,
> Peter Thygesen
>
> -- hope to see you all at ApacheCon in Amsterdam :)
>
>
>



Re: Getting SolrSharp to work, Part 2

Posted by Jeff Rodenburg <je...@gmail.com>.
Hey Peter - if you could submit your changes as an svn patch, we could apply
the update much faster.

thanks,
jeff



On Jan 23, 2008 2:42 AM, Peter Thygesen <th...@infopaq.dk> wrote:

> I wrote a small client in .Net which query Solr and dumps the result on
> screen.. fantastic low-tech.. ;)
>
> However I ran into new SolrSharp problems. My schema allows a particular
> field to be multiValued, but if it only has one value, it will cause
> SolrSharp fail in line 88 of Class: IndexFiledAttribute.
>
> My SearchRecord property is an array (List) and line 88 tries to set my
> property as if it was a string. The code should be corrected by checking
> if the property is an array and not whether it has 1 value or more.
> E.g. change line 85 to 085> if(!this.PropertyInfo.PropertyType.IsArray)
>
> Original code (from class IndexFiledAttribute):
> 082> public void SetValue(SearchRecord searchRecord)
> 083> {
> 084>   XmlNodeList xnlvalues =
> searchRecord.XNodeRecord.SelectNodes(this.XnodeExpression);
> 085>   if (xnlvalues.Count == 1)   //single value
> 086>   {
> 087>     XmlNode xnodevalue = xnlvalues[0];
> 088>     this.PropertyInfo.SetValue(searchRecord,
> Convert.ChangeType(xnodevalue.InnerText, this.PropertyInfo.PropertyType)
> , null);
> 089>   }
> 090>   else if (xnlvalues.Count > 1)   //array
> 091>   {
> 092>     Type basetype =
> this.PropertyInfo.PropertyType.GetElementType();
> 093>     Array valueArray = Array.CreateInstance(basetype,
> xnlvalues.Count);
> 094>     for (int i = 0; i < xnlvalues.Count; i++)
> 095>     {
> 096>
> valueArray.SetValue(Convert.ChangeType(xnlvalues[i].InnerText,
> basetype), i);
> 097>     }
> 098>     this.PropertyInfo.SetValue(searchRecord, valueArray, null);
> 099>   }
> 100> }
>
> My code (replace):
> 085>    if(!this.PropertyInfo.PropertyType.IsArray) // single value
> 090>    else // array
>
> Cheers,
> Peter Thygesen
>
> -- hope to see you all at ApacheCon in Amsterdam :)
>
>
>