내 데이터베이스에서 정지 단어가 포함 된 게임 이름을 검색하는 데 문제가 있습니다. 나는 일반적으로 정확히 일치하는 것을 찾고있을 뿐이고, 가능한 한 모든 "검색", "최적의"검색을 위해 "퍼지"적중을 원합니다.PostgreSQL 전체 텍스트 검색 문제 (to_tsquery)
E.g. content that produced false positives directly, contains sentences like; "the war in Afghanistan" + reference to "win*" another place; or "Lifeseed to win the war"; or "win the war that is taking over the galaxy" and so on.
작동하지 않습니다 물론이 및 오류 준 : 그것은 내 다른 검색의 일부 (PostgreSQL의 9.6를) 해결로 나는 "phraseto_tsquery"woudl 작업을 기대했다
SELECT id, title, content FROM my_table
WHERE [email protected]@ to_tsquery('win that war');
, 그러나 때문에에 그것을하지 않았다이 하나의 단어를 중지 : 나는 또한 타이 전투기 일을 사용하여 시도
SELECT id, title, content FROM my_table
WHERE [email protected]@ phraseto_tsquery('win that war');
, < 1> | < ->하지만, 일반적으로는 잘못된 반응 가져옵니다
SELECT id, title, content FROM my_table
WHERE [email protected]@ to_tsquery('win <-> that <-> war');
가 난 단지 가진 일치의 원하는 결과를 얻기 위해 여기에서 할 수있는 해킹가이 구문 검색입니다 반환 거기를? 나는 그걸 멈춤 단어로 제거 할 수 있을지도 모른다고 생각 했었습니다. 그 일을 어떻게하는지, 그리고 "월드 오브 워크래프트"와 비슷한 제목의 단어를 검색하는 데 얼마나 좋은 해결책인지 모르겠습니다. 일반적으로 정확한 일치 만 필요합니다).
생각하십니까?
나는 이것을 시도 할 것이다, 당신이 선호하는 옵션에 대한 나의 첫번째 관심사는 아마도 성능 일 것이다. 문제의 데이터베이스에는 수백만 개의 기사 항목이 포함되어 있으며 권장되는 솔루션이 변경됩니까? – user6776585
아니요. 추가 WHERE 절이있는 쿼리는 PostgreSQL이 인덱싱 된 조건을 먼저 적용하고 결과를 처리하기 위해 'LIKE' 필터를 사용하므로 너무 비싸지 않아야합니다. 물론 전체 텍스트 검색이 많은 결과를 반환한다면 상황은 달라질 것이지만 두 방법 중 하나에 문제가있는 것입니다. –