2017-07-27 3 views
0

In Sphinx (mit mysql Verbindung), wie kann ich für einen Begriff und auch, lassen Sie uns sagen, sagen wir 5 Zeichen vor und nach dem Spiel?Sphinx Suche Return Match und umgebende Zeichen

Zum Beispiel: Eine Reihe enthält this is a word in a sentence.

Wenn ich fragen: SELECT term FROM table WHERE MATCH('"word*"')

Ich möchte is a word in a s zurück sehen. Ist das möglich?

bearbeiten unter hilfreiche Antwort Mit der @ barryhunter, jetzt zu versuchen, herauszufinden, wie dies in meiner Anfrage passen:

SELECT field1,field2,SPHINX_SNIPPETS(field3,indexName, "word") as snippet FROM tableName

Antwort

2

Das ist, was CALL SNIPPETS für ausgelegt ist. Obwohl es in Worten zählt, nicht Characters.

http://sphinxsearch.com/docs/current/sphinxql-call-snippets.html

CALL SNIPPETS('this is a word in a sentance','index1','word', 2 AS around, 5 as limit_words); 

würde zurück

bekommen ... ist ein Wort in ein ...

hinzufügen '' as chunk_separator die Auslassungspunkte Möchte keine ist


Bearbeiten hinzu: dann, wenn möchten das Snippet während der Suchabfrage (nicht als separate CALL-Abfrage) bauen, SNIPPET() Funktion in der http://sphinxsearch.com/docs/current.html#sphinxql-select

+0

Sie intial auswählen können Dank! Klingt perfekt - ich werde einen Blick werfen :) –

+0

müsste ich 'SPHINX_SNIPPETS' für mysql verwenden? http://sphinxsearch.com/docs/current/sphinxse-snippets.html. Ich versuche zu tun: 'SELECT Feld1, Feld2, SPHINX_SNIPPETS (Feld3, IndexName," Wort ") als Schnipsel FROM Tabellenname, aber es wirft einen Syntaxfehler. BTW, ich erkenne Ihren Namen von _every_ Hilfe Artikel, den ich bisher gelesen habe :) –

+0

'SPHINX_SNIPPETS' ist ein ** Mysql UDF **, sein Teil von * SphinxSE * (eine Speicher-Engine in MySQL direkt installiert!). Aber Ihre erste Beispielabfrage verwendet ** SphinxQL ** - also ja, Sie wollen die SphinxQL 'SNIPPET()' Funktion! Es kann verwendet werden, um ein Snippet aus einem ** String-Attribut zu erstellen ** – barryhunter