2013-07-16 2 views
0

검색 문자열을 내 searchString에 맞게 수정하려면 어떻게해야합니까?Umbraco Lucene 자동 완성 검색

나는 다음과 같은 값으로 변수를 가지고 :

fieldName: nodeName 
searchString: des 

내가 그것을 어떤 연속 문자로 노드 이름을 찾을 수 있도록하려면 : 예를 들어, design을 입력하여 Esa selects Ariane 6 basic design을 찾으십시오.

var searchCriteria = SearchProvider.CreateSearchCriteria(BooleanOperation.Or); 

var luceneString = string.Format("{0}:", fieldName); 
luceneString += "(+" + searchString.Replace(" ", " +") + ")^10 "; 
luceneString += string.Format("{0}:{1}", fieldName, searchString); 
var rawQuery = searchCriteria.RawQuery(luceneString).Field(fieldName, searchString.Fuzzy(0.8f)); 

이 정의를 검토하여 내 :

나의 현재 검색으로 구성되어

<add name="AutoCompleteLookupIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine" 
      supportUnpublished="true" 
      supportProtected="true" 
      analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" /> 

+0

사용중인 분석기? 공백 둘 다 작동해야합니다. – naresh

+0

@naresh 예, 업데이트 된 질문보기 – cpoDesign

답변

1

당신은 아마 이것보다 훨씬 더 간단 시작해야합니다.

여기서 nodeName : d 개 *

여기서 nodeName : 드 *

여기서 nodeName : 데 *

여기서 nodeName : 다목적 *

당신은 필드에 사용자 유형에 따라 다음 쿼리를 구축해야

등등.

여기서 nodeName : d 개 *의 bodyText :

다음과 같은 쿼리를 작성, 하나 개 이상의 필드 위에 검색하려면

D *

여기서 nodeName : 드 * bodyText : 드 *

여기서 nodeName : DES * bodyText : 데 *

여기서 nodeName : 다목적 * bodyText : 다목적 *

,

이것은 OR 검색을 수행하며 두 필드를 선택적 필드로 검색합니다. nodeName의 앞에 +을 추가하면 해당 일치가 nodeName이지만 필수는 아니지만 bodyText은 선택됩니다. e.g :

+ 여기서 nodeName : 위해 D * bodyText : d 사용자가 하나 개 이상의 조건을 지정하는 경우, 상기 입력 살균 정규식을 사용 (모든 비 문자 숫자 문자를 제거)

* 분할 문자열 공간에 따라 다음과 같은 구축 :

노드 이름 : 그래픽 * 여기서 nodeName : 다목적의 *의 bodyText을 : 그래픽 * bodyText : 다목적 *

또는 마키 NG 필수 nodeName :

+ (여기서 nodeName : 그래픽 * 여기서 nodeName : 다목적의 *) bodyText : 그래픽 * bodyText : 다목적 *