2017-11-18 2 views
-3

SQLite 데이터베이스에서 데이터를 선택해야합니다. 그러나 사용자가 위치 이름을 입력 할 수있는 검색 필드가 있습니다. 그들이이 이름을 타이프 할 수 있으므로, 나는 이것에 따라 데이터베이스에서 관련 레코드를 그릴 수 있어야합니다. 예를 들어안드로이드 애플 리케이션에서 타이포로 SQLite 선택

:

입력 : 페리스 Whrrl

실제 : 관람차가

그것은 오타에도 불구하고 제대로 관람차 항목을 찾아야합니다. editdist3가 Android SQLite에 구현되어 있지 않다는 것을 알고 있습니다. 나는 또한 전체 데이터베이스를 RAM으로 선택하지 않고 모든 Strings를 반복하고 수동으로 Levenshtein 거리를 계산합니다. 이렇게하면 수퍼 리소스가 많이 소모됩니다.

도움이 될 것입니다! :)

+0

LIKE 연산자를 사용해보십시오. –

+0

LIKE 연산자는 오타를 근사하는 데는 도움이되지 않습니다./ – ashiswin

+1

LIKE 연산자를 사용하여 잠재적 인 일치 항목을 신속하게 제거한 다음 훨씬 더 작은 세트를 levenshtein하여 @BernoulliGate의 가능성을 알 수 있습니다. –

답변

-1

올바른 단어를 추측하려면 AI 시스템을 만들어야합니다. 나는 이것이 SQL이나 안드로이드와 관련이 없다고 생각한다.

또는 온라인 AI 시스템을 사용하여 올바른 단어를 추측 할 수 있습니다.

0

당신이 할 수있는 최선의 방법은 요즘 모든 검색 엔진처럼 자동 제안 기능을 구현하는 것입니다.

새 문자를 입력 할 때 필요에 따라 값을 검색하고 캐시하는 동적 알고리즘을 구현할 수 있습니다. 그러나 외부 서비스의 도움없이 베어 메탈에서 작업하는 경우 데이터베이스 및 기타 컨텍스트 변수의 크기에 따라 리소스 문제가 발생할 수도 있습니다.

적절한 인덱스가 있으면 도움이되지만 여전히 필요한 모든 값을 배열에로드하여 검색 속도가 더 빠르다고 생각합니다.

관련 문제