Indexed Search und Trennstrich (-) oder auch Minus Zeichen

  • 0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    06. 08. 2007, 12:54

    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


  • 1
  • 0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    06. 08. 2007, 17:55

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

    dort ca. Zeile 83

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

    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

  • 0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    13. 12. 2016, 10:53

    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

  • 0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    13. 12. 2016, 10:53

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

    dort ca. Zeile 83

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

    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

  • 0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    13. 12. 2016, 11:07

    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

  • 0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    13. 12. 2016, 11:07

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

    dort ca. Zeile 83

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

    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

  • 0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    13. 12. 2016, 11:07

    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

  • 0 x
    19 Beiträge
    1 Hilfreiche Beiträge
    13. 12. 2016, 11:07

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

    dort ca. Zeile 83

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

    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

  • 1