Reputation: 395
I search for a word and I get the results with facet as follows:
<lst name="itemtype">
<int name="Internal">108</int>
<int name="Users">73</int>
<int name="Factory">18</int>
<int name="Supply Chain Intermediaries">6</int>
<int name="Company">1</int>
<int name="Monitor/Auditor firm">0</int>
</lst>
Then I wrote the condition like fq=itemtype:Factory
. I get the results. But I am not getting the results for fq=itemtype:Supply Chain Intermediaries
.
I am thinking the problem rests with the spaces in the condition (Supply Chain Intermediaries). I tried with urlencode
(to replace spaces with %20
) also. But it's of no use. Can you guys please help me to solve this?
For single value it is working fine. I build the query like this:
http:localhost:8080/solr/select/?q=adidas&version=2.2&indent=on&facet=on&start=0&rows=20&fq={!raw f=itemtype}Supply Chain Intermediaries
But i need to write for multiple values. The original Query with out raw is as follows
http://localhost/solr/select/?q=adidas&version=2.2&indent=on&facet=on&start=0&rows=20&fq=(itemtype:Company itemtype:Supply Chain Intermediaries)
Can you guys please help me to solve this.
Upvotes: 35
Views: 54847
Reputation: 1
I have fixed white space issue by replacing :
$tmp[] = $name . ':' . $this->_escapeValue($value);
with :
$tmp[] = $name . ':' .'"'. $this->_escapeValue($value).'"';
Means by adding quotation after escape value in SolrSource.php
file.
Upvotes: 0
Reputation: 310
I have tried different solutions mentioned here, but none of them worked. However I solved it like this:
fq=itemtype: *Supply\ Chain\ Intermediaries*
Here space will be escaped with \
The above string will match with the strings Lorem Supply Chain Intermediaries Ipsum
If you are having a word starts with Supply Chain Intermediaries Ipsum
then just give
fq=itemtype: Supply\ Chain\ Intermediaries*
Upvotes: 21
Reputation: 2849
How is your itemtype field analysed?
If it is of type string , then use:
fq=itemtype:"Supply Chain Intermediaries"
Otherwise you can also try:
fq=itemtype:(Supply Chain Intermediaries)
Assuming OR
is the default operator in your config and text
is the default search field, your query will get translated to:
fq=itemtype:Supply OR text:(Chain Intermediaries)
Chain and Intermediaries are searched against default search field.
Upvotes: 45
Reputation: 31337
This doesn't answer this question directly but it may help with this problem:
Remove the spaces before posting to Solr.
For fields used for faceting rather than searching, it is not important to store the value with spaces. The value is simply a treated as key. Store the field itemtype
like so:"supplychainintermediaries", "monitorauditorfirm"
, etc.
When you display the facet values to the user, simply use a dictionary which maps key values to display values. Like so:
"supplychainintermediaries" --> "Supply Chain Intermediaries"
"monitorauditorfirm" --> "Monitor/Auditor Firm"
Upvotes: 2
Reputation: 616
I guess you can use
fq={!raw f=itemtype}Supply Chain Intermediaries
for that purpose
It tuns out that you have to use !term instead of !raw for Solr version >= 4.0
http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201012.mbox/%[email protected]%3E
Have a nice day.
Upvotes: 1