[英]how to achive exact, start with and like result in Apache Lucene SOLR 6.3.0
我已經開始為自動完成實現Apache Lucene SOLR 6.3.0實施。
在那我創建列模式,如:
<fields>
<field name="id" type="int" indexed="true" stored="true" required="f" multiValued="false" />
<field name="specialityName" type="string" indexed="true" stored="true"/>
<field name="isActive" type="int" indexed="false" stored="true"/>
<field name="term" type="string" indexed="true" stored="true"/>
<field name="tableName" type="string" indexed="true" stored="true"/>
</fields>
並希望在術語列中進行搜索。
我對自動完成結果的要求是這樣的。
My data // Exact match.
My data% // Start with.
%My data% // Any where in string.
這個。 因此,我想以此來存檔最大可能的結果。 我嘗試了許多查詢方式,但未成功。
任何幫助都會對我有幫助。
對於完全匹配,您可以嘗試q=term:"My data"
首先,您可以嘗試q=term:My data*
對於部分搜索或任何您可以嘗試的地方q=term:*Mydata*
嘗試使用q=term:My*data*
您可以嘗試以下字段類型,當將用戶輸入傳遞給SOLR
您將從輸入本身中刪除空格,它將完全返回您需要的內容:
<fieldType name="input_general" class="solr.TextField">
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="([^a-zA-Z0-9])" replacement="" replace="all" />
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="([^a-zA-Z0-9])" replacement="" replace="all" />
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
並將term
字段更改為:
<field name="term" type="input_general" indexed="true" stored="true"/>
應用您的示例:
進行Exact Match Search
; 您可以嘗試q=term:"Mydata"
Start With Search
; 您可以嘗試q=term:Mydata*
對於the Contain Search
; 您可以嘗試q=term:*data*
您可以按照以下提及的方式進行搜索。
prefTerm:"My Data" || prefTerm:My\\ \\Data* || prefTerm:*My*pain*
"My Data" : Exact match
My\ \Data*: Start with, here we need to escape all extra characters which can impact in jenkins search
*My*pain*: contains search
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.