2011-12-01 5 views
0

사용자가 항상 점수에 따라 정렬되지만 이름의 일부를 입력하여 필터링 할 수있는 여기에 같은 검색 기능을 구축해야합니다.stackoverflow의 사용자 페이지에서 비슷한 기능을 검색하십시오.

내 응용 프로그램이 NoSQL 데이터베이스를 사용하여 Java로 작성되었습니다. 이 구현에 적합한 도구가 무엇인지 제안 해주십시오.

쿼리와 일치하는 모든 사용자 이름을 검색 한 다음 사용자의 각 요청시 응용 프로그램 수준에서 점수별로 정렬하면 좋을까요? 그러면 많은 불필요한 검색 결과가 발생하며 &은 성능 문제 일 수 있습니다.

아마도 이미 정렬 된 목록을 유지함으로써 더 좋은 방법이있을 수 있습니까 (이름과 평판에 따라 정렬)?

또한 누군가가 실제로이 작업을 수행하는 방법에 대해 말할 수 있다면 좋습니다.

답변

1

jquery + 아약스 (검색) + lucene (콘텐츠를 인덱싱 및 검색에)

+0

lucene에 대해 별도의 서버를 유지해야합니까? 데이터를 어디에 저장합니까? –

+1

아니요! 파일 시스템이나 RAM 또는 원하는 곳에 저장할 수 있습니다. 그것에 대해 읽고 당신이 그것을 좋아할 것이라고 확신합니다. 그게 제가 큰 데이터 세트를 다룰 때 사용하는 것입니다. – aishwarya

+0

은 지적 해 주셔서 감사합니다! 간단한 간단한 링크를 제안 할 수 있을까요? –

1

datatables을보십시오. 그러나 UI 부분에서 작업해야합니다.

+0

이는 데이터베이스에서 전체 데이터를로드하는 것이 좋습니다. 한 번에 1000 개 정도의 결과가 표시되는 것처럼 보이면 한 번에 모두 검색해야합니다. 작은 결과 집합에는 좋지만 1000 초에는 가치가 없습니다. –

+0

@Raj : 예. 그런 시나리오에는 좋지 않습니다. 표시되는 레코드 수를 제한하고 레코드를 거의 선택하지 않고 표시 할 수 있습니다. (SO 사용자 페이지에서도 최상위 사용자가 거의 보이지 않습니다.) – xyz

+0

네, 결과는 페이지가 현명하게 정렬되어 있기 때문에 어쨌든 DB의 모든 데이터를 읽을 필요가 있습니다. –

1

aishwarya에 동의합니다. 사용하는 것이 좋습니다 Apache Lucene 와일드 카드, 필드 검색, 용어/필드/문서 무게, 찾기 유사, 맞춤법 검사, 다국어 검색 등의 기능을 많이 제공합니다. 이상

관련 문제