2017-10-01 2 views
-3

나는 스마트 다중 언어 PHP 검색 엔진을 만들려고 노력하고 있습니다. 예를 들어 samsung smarthphone을 검색하고 사용자 유형을 smasung smortphone으로 검색하고 싶습니다. 어떤 1 000 000 행 DB에서 이것을 추출하는 가장 좋은 방법입니다. 내 생각 (이 예를 들어)이 정규 표현식이 사용자 입력의 적어도 4 ~ 5 문자가 포함 된 단어를 가지고 그 날 selectinh 모든 행입니다PHP MySQl 검색 엔진 조언

'[a-zA-z]*[smasung]{4,}[a-zA-Z]*' AND '[a-zA-Z]*[smortphone]{5,}[a-zA-Z]*' 

일치하는 경우 행을 선택하는 것이 었습니다. 그러나 이것은 선택된 모든 행에서이 정규 표현식을 실행 한 다음 사용자 입력과 일치하는 것을 비우고 가장 일치하는 것을 저장한다는 의미입니다. 1 000 000은 꽤 느립니다. 더 좋은 생각이 있습니까?

답변

0

나는이 문제를 알고 있으므로 모든 중요한 레코드를 elasticsearch (NoSql과 설치가 매우 용이함)로 내보냈습니다. 다음은 퍼지 검색을 구현했습니다. (빌드 인)

{ 
"multi_match" : { 
    "fields" : ["product"], 
    "query" : "smasung smortphone", 
    "fuzziness" : "AUTO" 
} 
}