Autocomplete Länge des Tabellenindex anpassen?

Hallo,

meine Tabelle auf die Autocomplete angewendet wird beinhaltet ca. 500.000 Einträge.

In den meisten Fällen habe ich kein Problem mit autocomplete doch manchmal zeigt er mir nicht alle Werte an…

Z.B.:

In der Tabelle befinden sich folgende Werte:

Wirtschaft

wirtschaften

wirtschaltlich

Wirtschaftswissenschaften

Wenn ich "wirts" eingebe, dann zeigt mir mein Autocomplete nur

wirtschaft

wirtschaten

an. Die zwei weiteren Werte sind zwar auch suchbar, aber werden erst angezeigt wenn man den nächsten passenden Buchstaben anzeigt.

Ich weiß nicht wo das Problem liegt?! Gibt es noch weitere Besonderheiten die man hier beachten muss?

Danke für eure Tipps

mfg

Hi,

wie es ausschaut, kommen erst die Wörter im Autocomplete an, welche von der Groß- und Kleinschreibung her exakt passen.

Die anderen Wörter, wie "Wirtschaft", "Wirtschaftswissenschaften" scheint das System aufgrund des großen "W" als nicht zutreffend zu deklarieren.

Je nachdem, wie du die Wörter suchst, kann dies verschiedene Ursachen haben.

Z.B. die boolsche Voltextsuche in MySQL ermöglicht die Suche nach ähnlichen Wörtern. Wörter sind erst dann passend, wenn XX% der Buchstaben mit dem Suchmuster übereinstimmen.

Beispiel. Die interne Regel deiner Volltextsuche sagt >80 der Buchstaben müssen mit dem Suchbegriff übereinstimmen. Dann würde "wirts" nicht auf "Wirts" passen (hier stimmen =80% nicht >80%)

Beim weiteren Buchstaben "Wirtsc" passen dann 83,3%.

…so in die Richtung wäre eine mögliche Alternativ, um das Verhalten zu erklären.

Wenn die Vorschläge aus der DB kommen: versuch doch mal das SQL, welches CAutcomplete in den DB kippt, "per Hand" auf dem DB Server auszuführen.

Gruß,

rall0r

Hi und danke für deine ausführliche Antwort

Nein, leider hat das nicht mit der Groß und Kleinschreibung zu tun

Hier mein Code




   $name = trim(Yii::app()->request->getParam('q'));

   $name = Characters::clearSonder($name);    // Sonderzeichen cleanen


   $dLanguage = trim(Yii::app()->request->getParam('l'));

      	

   // this was set with the "max" attribute of the CAutoComplete widget

   $criteria = new CDbCriteria;

   $criteria->alias = 'b';

   $criteria->select = 'b.phrase';

   $criteria->condition = "b.phrase LIKE '$name%'";

   $criteria->addInCondition( "b.category", $aLang );

   $criteria->addInCondition( "translations.category", $aLang );

   $criteria->group ="b.baseform2, translations.phrase";

   $criteria->limit = 15;

   $userArray = basicforms::model()->with(array('categories'))->findAll( $criteria );


   foreach($userArray as $userAccount)

   {

      $returnVal .= $userAccount->getAttribute('baseform')."\n";

   }

   echo $returnVal;

}



Wenn ich den Code über eine fest URL ausführe Beispiel:

www.domain.tld/search/auto/wirts

Dann zeigt er mir alle Vorschläge richtig an!!!!

Nur im autocomplete wird nicht alles geladen?!

habe ich ausgeführt und alles funktioniert wunderbar.

Ich habe noch einen weiteren seltsamen Fall.

Beispiel in der Tabelle befindet sich "Autobahn" und "Autobahnausfahrt"

Wenn du nach "Autobah" suchst dann wird im Autocomplete Feld nur "Autobahn" angezeigt.

Suchst du aber nach "Autobahn " (mit Leerzeichen) dann wird auch Autobahnausfahrt angezeigt!?

Eine Vermutung von mir war das dies mit dem Cache zu tun hat, aber Fehlanzeige.

Hier mein Widget wie ich das einbinde.