Zum Inhalt springen

Indexed Search und Trennstrich (-) oder auch Minus Zeichen

Erstellt am 6. August 2007 · 1 Antwort · letzte Antwort am 6. August 2007

Tags: Suche, Frage

matthias_k ·

Ich habe gesucht und gesucht, aber noch nichts dazu gefunden

Und zwar: Wenn ich bei der Indexed Search z.B.:
test-wort
eingebe (Wichtig: kein Lehrzeichen zwischen den Wörtern und dem "minus"), dann ist das Suchergebnis erstmal richtig, jedoch wird aus dem Suchwort "testwort", also ohne "minus".
Bei:
"test+wort" entsteht "test" and "wort",
was zwar schon brauchbarer ist, jedoch meiner Meinung nach nicht den Kern trifft, denn besser wäre wohl:
"test-wort" wird/bleibt "test-wort"
"test - wort" wird "test" and not "wort"
und
"test+wort" wird/bleibt "test+wort"
"test + wort" wird "test" and "wort".

Mir würde schon ein kleiner Tipp sehr helfen, wie ich die +/-/| Operatoren überhaupt loswerde, um das Problem zu umgehen.
Das:

var $operator_translate_table = Array ( // case-sensitive. Defines the words, which will be operators between words
Array ('+' , 'AND'),
Array ('|' , 'OR'),
Array ('-' , 'AND NOT'),

habe ich schon gefunden, zeigt aber keine Wirkung

Besten Dank im Voraus, für jede Hilfe o.O

matthias_k ·

Ich glaube, ich hab's herausgefunden:
in der ../typo3/sysext/indexed_search/class.lexer.php

dort ca. Zeile 83

	var $lexerConf = array(
		'printjoins' => array(	// This is the Unicode numbers of chars that are allowed INSIDE a sequence of letter chars (alphanum + CJK)
			0x2e,	// "."
			0x2d,	// "-"
			0x5f,	// "_"
			0x3a,	// ":"
			0x2f,	// "/"
			0x27,	// "'"
			// 0x615,	// ARABIC SMALL HIGH TAH
			0x2b,	// "+"
			// 0x7c	// "| pipe" da hoerts dann auch mal auf
		),
		'casesensitive' => FALSE,	// Set, if case sensitive indexing is wanted.
		'removeChars' => array(		// List of unicode numbers of chars that will be removed before words are returned (eg. "-")
			
		)

einfach das "0x2d // "-"" aus dem removeChars array, wo es standardmässig drinsteht, rausnehmen und ins printjoins array eintragen. Ungefähr so wie hier oben zu sehen.

Warum das standardmässig nicht drin ist, kann ich leider nicht beantworten.
Falls das aus Sicherheitsgründen nicht erlaubt ist, oder man nicht sicher ist, ob man Worte mit Bindestrichen in der Index-Suche haben möchte, einfach alles so lassen wie es ist.
Prüfung dieses Posts durch einen "Meister" wäre schön o.O