Sphinx 検索エンジンを使用するプロジェクトに取り組んでいます。しかし、私が気付いたように、Sphinx のドキュメントは膨大ですが、理解するのは困難です。
そのため、WHERE 句を使用して MATCH ステートメントをフィルタリングする方法に関する情報を見つけることができませんでした。私がまだ試したことは次のとおりです。
"SELECT *, country FROM all_gebrauchte_products WHERE MATCH('@searchtext (".$searchQuery.")') AND country='".$where."' ORDER BY WEIGHT() DESC LIMIT ".$page.", ".$limit." OPTION ranker=expr('sum(lcs)')"
country=$where 句なしで使用すると、さまざまな国からの多くの GUID が返されます。したがって、どういうわけか国列をフィルタリングする必要があります。
上記のステートメントを使用すると、エラーが発生します。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 index all_gebrauchte_products: parse error: unknown column: country'
しかし、私は次のようにインデックスを設定しました:
sql_query_range = SELECT MIN(gebr_id), MAX(gebr_id) FROM all_gebrauchte_products
sql_range_step = 10000
sql_query = \
SELECT a.gebr_id AS guid, 'products' AS data_type, a.gebr_products AS products, a.gebr_user AS username, a.gebr_date AS datadate, CONCAT(a.gebr_hersteller,' ', a.gebr_modell,' ', a.gebr_ukat,' ', a.gebr_kat,' ', a.gebr_bemerkung) AS searchtext, a.gebr_bild1 AS image1, a.gebr_bild2 AS image2, a.gebr_bild3 AS image3, a.gebr_bild4 AS image4, a.gebr_bild5 AS image5, b.h_land AS country, b.h_web AS weblink, b.h_firmenname AS company, b.h_strasse AS street, b.h_plz AS zipcode, b.h_ort AS city, a.gebr_aktiv AS active \
FROM all_gebrauchte_products a, all_haendler b \
WHERE a.gebr_user = b.h_loginname AND a.gebr_id>=$start AND a.gebr_id<=$end
sql_attr_uint = active
誰が何がうまくいかないのか教えてもらえますか? または、どのように国をフィルタリングする必要がありますか?
サンクス。あなたの助けのために事前に。