Highlighted

solr search returns 0 results if search phrase is in double quotes

Explorer ,
Dec 19, 2014

Copy link to clipboard

Copied

sI have one search result that looks like this:

Outlook Out of Office Assistant

Jul, 28, 2014 - To activate the Out of Office Assistant: On the Tools menu click Out of Office Assistant. In the Out of Office Assistant dialog box select the Send Out of Office auto-replies radio button. If you want to specify a set time and date range select the Only send during this time range check box. Then set the Start time and then set the...

When I do this search, I get 10 results back including the one above.

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 out of office'

orderby="sort_date_s desc"

/>

But when I do a phrase search for "Out of Office":

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 "out of office"'

orderby="sort_date_s desc"

/>

or

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 "Out of Office"'

orderby="sort_date_s desc"

/>

I get 0 results. What am I doing wrong? I would like to do a phrase match to what is in the body, not the "title".

I am on ColdFusion 11, update 3

Escaping the quotes didn't help .I already read the solr search examples by Adobe but that didn't help me much. I don't know if this is documented in the CF documentation anywhere (I couldn't find it). What I worked for me after looking at the Apache Solr documentation was that you need to add "+" in between the words in the phrase:

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 "Out+of+Office"'

orderby="sort_date_s desc"

/>

Expecting my users to enter "+" is a bit much but I know they can handle putting double quotes about phrases they want an exact match for. After some googling, this is my solution for automatically adding the "+" between the exact phrase for cfsearch processing (if you have a better solution, please let me know) :

  <!--- ////START: solr search --->
  <cfset solr_criteria = "">
 
  <!--- //START:Process the user's input if they use exact phrase search (in double quotes). I change their keyword input so it is cfsearch friendly. If a user enters 'how to set "Out of Office" and "Web Access"', we clean it up so it is 'how to set  "Out+of+Office" and "Web+Access"' for the cfsearch--->
  <!--- I don't know if there is a better way to do this, but this is what I came up with. --->
 
  <cfset txt_keyword_solr = #txt_keyword#>
  <cfif find('"',txt_keyword_solr)>
    <cfset stringphrase = reMatch('"([^"]*)"',txt_keyword_solr)>


    <!--- <cfdump var="#stringphrase#" label="Example REMatch"> --->

    <cfloop array="#stringphrase#" index="i">
      <cfset txt_keyword_solr = #ReplaceNoCase(txt_keyword_solr,i,rereplace(i, " ","+","all"),"all")#>     
    </cfloop>

  </cfif>
  <cfif LEN(TRIM(txt_keyword_solr)) GT 0>
    <cfset solr_criteria = solr_criteria & ' ( #Trim(preservesinglequotes(txt_keyword_solr))# ) '>
  </cfif>
  <!--- //END:Process the user's input if they use exact phrase search (in double quotes). --->
 
  <cfsearch
name="qTechTips"
collection="#collection#"
criteria="#solr_criteria#"
orderby="sort_date_s desc"
/>
  <p><cfoutput>#solr_criteria#</cfoutput></p>
  <!--- ////END: solr search --->

Views

1.3K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

solr search returns 0 results if search phrase is in double quotes

Explorer ,
Dec 19, 2014

Copy link to clipboard

Copied

sI have one search result that looks like this:

Outlook Out of Office Assistant

Jul, 28, 2014 - To activate the Out of Office Assistant: On the Tools menu click Out of Office Assistant. In the Out of Office Assistant dialog box select the Send Out of Office auto-replies radio button. If you want to specify a set time and date range select the Only send during this time range check box. Then set the Start time and then set the...

When I do this search, I get 10 results back including the one above.

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 out of office'

orderby="sort_date_s desc"

/>

But when I do a phrase search for "Out of Office":

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 "out of office"'

orderby="sort_date_s desc"

/>

or

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 "Out of Office"'

orderby="sort_date_s desc"

/>

I get 0 results. What am I doing wrong? I would like to do a phrase match to what is in the body, not the "title".

I am on ColdFusion 11, update 3

Escaping the quotes didn't help .I already read the solr search examples by Adobe but that didn't help me much. I don't know if this is documented in the CF documentation anywhere (I couldn't find it). What I worked for me after looking at the Apache Solr documentation was that you need to add "+" in between the words in the phrase:

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 "Out+of+Office"'

orderby="sort_date_s desc"

/>

Expecting my users to enter "+" is a bit much but I know they can handle putting double quotes about phrases they want an exact match for. After some googling, this is my solution for automatically adding the "+" between the exact phrase for cfsearch processing (if you have a better solution, please let me know) :

  <!--- ////START: solr search --->
  <cfset solr_criteria = "">
 
  <!--- //START:Process the user's input if they use exact phrase search (in double quotes). I change their keyword input so it is cfsearch friendly. If a user enters 'how to set "Out of Office" and "Web Access"', we clean it up so it is 'how to set  "Out+of+Office" and "Web+Access"' for the cfsearch--->
  <!--- I don't know if there is a better way to do this, but this is what I came up with. --->
 
  <cfset txt_keyword_solr = #txt_keyword#>
  <cfif find('"',txt_keyword_solr)>
    <cfset stringphrase = reMatch('"([^"]*)"',txt_keyword_solr)>


    <!--- <cfdump var="#stringphrase#" label="Example REMatch"> --->

    <cfloop array="#stringphrase#" index="i">
      <cfset txt_keyword_solr = #ReplaceNoCase(txt_keyword_solr,i,rereplace(i, " ","+","all"),"all")#>     
    </cfloop>

  </cfif>
  <cfif LEN(TRIM(txt_keyword_solr)) GT 0>
    <cfset solr_criteria = solr_criteria & ' ( #Trim(preservesinglequotes(txt_keyword_solr))# ) '>
  </cfif>
  <!--- //END:Process the user's input if they use exact phrase search (in double quotes). --->
 
  <cfsearch
name="qTechTips"
collection="#collection#"
criteria="#solr_criteria#"
orderby="sort_date_s desc"
/>
  <p><cfoutput>#solr_criteria#</cfoutput></p>
  <!--- ////END: solr search --->

Views

1.3K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Dec 19, 2014 0
Dec 20, 2014

Copy link to clipboard

Copied

You can use the search criteria as per the suggested sample in below link:-

Solr search examples - ColdFusion, English documentation - Adobe Learning Resources

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Dec 20, 2014 0
Enthusiast ,
Dec 22, 2014

Copy link to clipboard

Copied

Try escaping the quotes in your query like "secondary_id_i:24 \"Out of Office\""

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Dec 22, 2014 0
Explorer ,
Dec 23, 2014

Copy link to clipboard

Copied

Escaping the quotes didn't help .I already read the solr search examples by Adobe but that didn't help me much. I don't know if this is documented in the CF documentation anywhere (I couldn't find it). What I worked for me after looking at the Apache Solr documentation was that you need to add "+" in between the words in the phrase:

<cfsearch

name="qTechTips"

collection="#collection#"

criteria='secondary_id_i:24 "Out+of+Office"'

orderby="sort_date_s desc"

/>

Expecting my users to enter "+" is a bit much but I know they can handle putting double quotes about phrases they want an exact match for. After some googling, this is my solution for automatically adding the "+" between the exact phrase for cfsearch processing (if you have a better solution, please let me know) :

  <!--- ////START: solr search --->
  <cfset solr_criteria = "">
 
  <!--- //START:Process the user's input if they use exact phrase search (in double quotes). I change their keyword input so it is cfsearch friendly. If a user enters 'how to set "Out of Office" and "Web Access"', we clean it up so it is 'how to set  "Out+of+Office" and "Web+Access"' for the cfsearch--->
  <!--- I don't know if there is a better way to do this, but this is what I came up with. --->
 
  <cfset txt_keyword_solr = #txt_keyword#>
  <cfif find('"',txt_keyword_solr)>
    <cfset stringphrase = reMatch('"([^"]*)"',txt_keyword_solr)>


    <!--- <cfdump var="#stringphrase#" label="Example REMatch"> --->

    <cfloop array="#stringphrase#" index="i">
      <cfset txt_keyword_solr = #ReplaceNoCase(txt_keyword_solr,i,rereplace(i, " ","+","all"),"all")#>     
    </cfloop>

  </cfif>
  <cfif LEN(TRIM(txt_keyword_solr)) GT 0>
    <cfset solr_criteria = solr_criteria & ' ( #Trim(preservesinglequotes(txt_keyword_solr))# ) '>
  </cfif>
  <!--- //END:Process the user's input if they use exact phrase search (in double quotes). --->
 
  <cfsearch
name="qTechTips"
collection="#collection#"
criteria="#solr_criteria#"
orderby="sort_date_s desc"
/>
  <p><cfoutput>#solr_criteria#</cfoutput></p>
  <!--- ////END: solr search --->

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Dec 23, 2014 0