2013-04-19 2 views
0

사람들이 200 문자 설명으로 판매/교환/포기하기 위해 물건을 나열 할 수있는 앱이 있습니다. 그들에게 판매자라고 부르 자.스핑크스 역 검색 - 새 항목이 추가되면 기존에 저장된 키워드에 대한 검색을 실행합니다.

다른 사용자는 물건을 검색 할 수 있습니다. 구매자라고 불러 보겠습니다.

텍스트 검색을 위해 Django, MySQL 및 Sphinx를 사용하여 시스템을 설정했습니다.

구매자가 "티셔츠"를 찾고 있다고 가정 해 봅니다. 그들은 원하는 결과를 얻지 못합니다. 나는 앱이 구매자에게 "무엇인가 올지 말해줘"라고 말하기위한 상자를 체크 할 수있는 옵션을 제공하기를 원한다.

판매자가 "Quicksilver 티셔츠"를 나열하면 저장된 검색에 대해 일종의 역 검색을 실행하여 구매자에게 쿼리와 일치하는 새 항목이 나열되었음을 알립니다.

분명히 새로운 항목이 루프를 통해 나열되어 매치를 찾을 때마다 모든 저장된 검색에서 스핑크스 검색을 실행할 수 있습니다.하지만 이것은 정신 나간 것입니다. 이것은 내가 정상적으로 달성하고자하는 효과입니다. 어떻게 할 수 있습니까?

답변

2

당신은 문자 그대로 역 색인을 만듭니다!

데이터베이스에 '검색'을 저장하고 여기에 색인을 작성하십시오.

't-shirts'는이 색인의 문서입니다.

그런 다음 새 제품이 제출되면이 색인에 대해 쿼리를 실행합니다. 'Quorum'구문을 사용하거나 심지어 match-any - 하나의 키워드와 일치하는 일치 항목을 얻으십시오.

예에서 검색어는 "Quicksilver t-shirt"/1이며 일치하는 의미는 Quicksilver 또는 t-shirt입니다. 그러나 훨씬 더 긴 제목이나 심지어 전체 설명에서도 마찬가지입니다.

해당 쿼리의 결과는 일치하는 (단일 단어 *) 원본 검색 목록입니다. 이것은 또한 -을 word char로 처리하도록 인덱스를 설정했다고 가정합니다.

  • * 잠재적 인 일치를 당신이 등 더 복잡한 쿼리, 멀티 키워드 또는 부정과 OR 브래킷, 구문을 허용하지만이 경우 역 검색 jsut 당신에게주는 경우 확인해야하므로, 그 약간 더 복잡합니다 그것은 여전히 ​​일치합니다. 덕분에 특히 - 아직도 쿼리 수 있지만, 당신은 당신이 BTW 모든

에서 실행 할 필요가없는, 나는이 '반대'에 대한 기술적 용어는 Prospective Search http://en.wikipedia.org/wiki/Prospective_search

+0

이 좋은 시작입니다 검색 생각 올바른 기술 용어는 우리가 좀 더 복잡하게 만들려면 예를 들어. 특정 위도/경도 위치에서 특정 거리 내에있는 "대형 수은 티셔츠"의 저장된 검색 그런 다음 새 목록이 제목과 함께 게시되면 예. "호주의 퀵실버 티셔츠 - 크고 파랗다"나는이 문구에 대해 쿼럼을 사용하여 쿼리를 실행해야하지만 여러 번의 히트를 반환 할 것이다. "거친 검색, 훌륭한 검색"보다 더 지적인 방법이 있을까요? – awidgery

+0

그럼 str2wordcount를 사용하는 경우에도 역 색인에 단어 수를 저장 한 다음이를 사용하여 순위에 영향을 미칠 수 있습니다. 예를 들어 expression ranker를 사용하여 적어도 속성 값만큼 큰 hit_count가있는 결과를 홍보하십시오. 이렇게하면 사후 처리 중 단일 단어 일치를 쉽게 제외 할 수 있습니다. – barryhunter