Coldfusion Solr搜索-相当于SQL中的LIKE %string%



如何使用以下SQL搜索查询的相同逻辑进行SOLR搜索?

SELECT * FROM user where email LIKE '%ben%'" 

我试了以下命令,

<cfscript>
    mysearch = new com.adobe.coldfusion.search();
    searchResult = mysearch.search(collection="mycollection", criteria='ben*'); 
</cfscript>
  1. criteria='ben*'匹配的raw_本 @yahoo.com"one_answers"本 @yahoo.com"但没有返回字符串的ro ro 的。

  2. criteria='ben~'匹配的raw_本 @yahoo.com"one_answers"本 @yahoo.com"但没有返回字符串的ro ro 的。

同样适用于所有模糊搜索,疯狂搜索尝试。

您需要更改字段的fieldType,该字段可以使用solr生成令牌。EdgeNGramFilterFactory在它的帮助下,您可以生成例如abhijit将生成abh, abhi, abhij, abhiji, abhijit,因此将匹配所有这些组合为您的查询。

使用第二个EdgeNGramFilterFactory,它将生成令牌Jit、ijit、hijit、bhijit、abhijit、iji、hiji、bhiji等等…

尝试下面的字段类型

<fieldType name="text_reference" class="solr.TextField" sortMissingLast="true" omitNorms="true" positionIncrementGap="100">
   <analyzer type="index">
     <tokenizer class="solr.KeywordTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="50" side="front"/>
       <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="50" side="back"/>
   </analyzer>
   <analyzer type="query">
      <tokenizer class="solr.KeywordTokenizerFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
   </analyzer>
</fieldType>

最新更新