2011-01-20 4 views
1

안녕 얘들 아 응용 프로그램에 일부 검색 기능을 구현하려고 시도하는 중이 셨습니다.Solr/SolrNet - 문자 검색을 위해 편지에 와일드 카드 사용

Solr 1.4.1 Tomcat7에서 실행 View im 인덱싱을 사용하여 MS SQLServer에 JDBC 연결 Solr의 색인 생성이 완료되었으며 색인이 작동합니다.

Solr을 검색하고 통신하려면 약간의 테스트 WCF 서비스 (나중에 주 서비스로 구현)를 작성해야합니다.

목적은 우리의 주요 응용 프로그램에 텍스트 필드를 구현하는 것입니다. 이 텍스트 필드에서 사용자는 그림판과 같은 것을 입력하고 점점 더 많은 문자가 입력됨에 따라 점차적으로 객체 목록을 필터링 할 수 있습니다.

이것은 솔레와 함께 어느 정도까지 잘 작동합니다. 내 쿼리의 말과 * 파 * 고통 * 페인트 * 페이지처럼 많은 요청을 던지는 등의 메신저로 와일드 카드 별표 (*)를 사용하여 메신저 서버에서

등과 그 결과를 리턴 잘 (아주 인상적인 빠른 실제로). 유일한 문제는 사용자가 전체 단어를 입력하면 쿼리가 paintbrush *인데 solr이 결과를 0으로 반환한다는 것입니다.

는 그래서 해당 쿼리를 보인다 + 와일드 카드는 쿼리 + 뭔가 및 쿼리하지 + 아무것도

내가 Lucene.Net에서이 작업을 얻을 수 있었다지만 SOLR 물건을 보인다 같은 방식으로 일을 밤은 없습니다.

그러한 기능을 구현하는 데 도움이 될만한 조언이 있으십니까?

메신저 이후 SolrNet 사용하여 보는 많은 코드가되지 않습니다 : http://pastebin.com/tXpe4YUe

내가 그것을 :)

을 볼 위치를 알고 아직 SOLR에 그 분석기와 파서와는하지만, 메신저 수있는 뭔가가 그림

답변

0

형태소 분석 문제의 원인이 될 것으로 보인다. 나는 그 유형의 텍스트 대신에 text_ws의 클론을 사용하여 그것을 고쳤다. 내 scema.xml 변경 사항 : http://pastebin.com/xaJZDgY4

스테이징이 비활성화되고 소문자 인덱싱이 사용됩니다. 모든 쿼리가 소문자 인 경우 항상 결과를 제공해야합니다 (있는 경우).

분석기는 와일드 카드로 작동하지 않으므로 와일드 카드를 사용할 때 Johnny 또는 Johnni의 결과를 얻는 논리가 "깨졌습니다"라는 것이 문제입니다.

당신이 직면하고있는 비슷한 문제와 제 해결책이 잘 작동하지 않는다면 debugQuery =를 쿼리 문자열에 추가하고 무슨 일이 벌어지는 지 한 번 더 볼 수 있습니다. 그 덕분에 문제의 범위를 좁힐 수있었습니다.

2

Solr에서 접두사 와일드 카드 쿼리를 사용하여 제안 사항을 구현하지 않겠습니다. 이렇게하기에 더 적합한 다른 메커니즘이 있습니다. 참조 :

+0

interresting 보이지만 그것은 내가 interrested 무엇을 꽤 할 것 같습니다. 여기에 사용하는 스키마입니다 : http://pastebin.com/fF5Kisgd 내가 원하는 것을 부분적으로 또는 완전히 " 텍스트 "내가 물어. 텍스트는 뷰를 사용하여 데이터베이스의 주어진 행에있는 모든 필드의 concat입니다. – mfriis

+0

@mfriis : 예, 그게 바로 제가 말한 것입니다. 케이스가 어떻게 다른지 자세히 설명해 주시겠습니까? –

+0

그럼 어쨌든 올바른 트랙에서 메신저처럼 들리 네요. 출력은 그냥 이상하게 보입니다 : http://pastebin.com/H2M8aX2s 메신저에 다음 쿼리를 사용하고 있습니다 : solr/terms? terms.fl = text & terms.regex = byg. * & terms.regex.flag = case_insensitive with my index 텍스트 필드에 "bygning"이 표시됩니다. 이제는 ID와 Type (내 문서 스키마의 다른 두 필드)에 나열된 모든 개체가 필요합니다. 여기서 출력물은 무작위로 보인다. (결과 목록의 이름은 나에게 잘 알려져 있지만 부분적으로는 잘 알려져있다.) – mfriis

관련 문제